summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--OSX/LaunchScreen.xib12
-rw-r--r--OSX/Makefile81
-rw-r--r--OSX/Media-iOS.xcassets/LaunchImage.launchimage/Contents.json38
-rw-r--r--OSX/README5
-rw-r--r--OSX/SaverListController.m4
-rw-r--r--OSX/SaverRunner.h2
-rw-r--r--OSX/SaverRunner.m11
-rw-r--r--OSX/SaverRunner.plist10
l---------OSX/Sparkle.framework/Modules1
l---------OSX/Sparkle.framework/PrivateHeaders1
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SPUDownloadData.h43
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SPUDownloader.h25
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDelegate.h38
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h13
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderProtocol.h34
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h20
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SPUURLRequest.h35
-rw-r--r--[-rwxr-xr-x]OSX/Sparkle.framework/Versions/A/Headers/SUAppcast.h37
-rw-r--r--[-rwxr-xr-x]OSX/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h72
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SUCodeSigningVerifier.h22
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SUErrors.h56
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SUExport.h18
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h52
-rw-r--r--[-rwxr-xr-x]OSX/Sparkle.framework/Versions/A/Headers/SUUpdater.h272
-rw-r--r--OSX/Sparkle.framework/Versions/A/Headers/SUUpdaterDelegate.h301
-rw-r--r--[-rwxr-xr-x]OSX/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h22
-rw-r--r--[-rwxr-xr-x]OSX/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h22
-rw-r--r--[-rwxr-xr-x]OSX/Sparkle.framework/Versions/A/Headers/Sparkle.h20
-rw-r--r--OSX/Sparkle.framework/Versions/A/Modules/module.modulemap6
-rw-r--r--OSX/Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h21
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist54
-rwxr-xr-xOSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdatebin0 -> 193884 bytes
-rwxr-xr-xOSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileopbin0 -> 89836 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo1
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icnsbin0 -> 37132 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nibbin0 -> 11698 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.stringsbin0 -> 8070 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.stringsbin0 -> 6310 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.stringsbin0 -> 7434 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.stringsbin0 -> 7990 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.stringsbin0 -> 8874 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.stringsbin0 -> 7332 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.stringsbin0 -> 9096 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.stringsbin0 -> 9640 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.stringsbin0 -> 5814 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.stringsbin0 -> 8964 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.stringsbin0 -> 4936 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hr.lproj/Sparkle.stringsbin0 -> 9352 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hu.lproj/Sparkle.stringsbin0 -> 9600 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.stringsbin0 -> 5478 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.stringsbin0 -> 7920 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.stringsbin0 -> 7718 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.stringsbin0 -> 5868 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.stringsbin0 -> 8998 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.stringsbin0 -> 8466 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.stringsbin0 -> 8140 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.stringsbin0 -> 9280 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.stringsbin0 -> 7434 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.stringsbin0 -> 9412 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.stringsbin0 -> 7446 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.stringsbin0 -> 7168 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.stringsbin0 -> 7562 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.stringsbin0 -> 7406 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.stringsbin0 -> 8118 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.stringsbin0 -> 9246 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.stringsbin0 -> 7466 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.stringsbin0 -> 5484 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.stringsbin0 -> 5410 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/DarkAqua.css9
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/Info.plist22
-rw-r--r--[-rwxr-xr-x]OSX/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist160
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/SUStatus.nibbin6565 -> 11698 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nibbin7118 -> 12411 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nibbin10445 -> 21763 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nibbin12737 -> 18515 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.stringsbin8896 -> 8070 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.stringsbin0 -> 6310 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nibbin7039 -> 12399 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nibbin10241 -> 21789 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nibbin12782 -> 18613 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.stringsbin8642 -> 7434 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nibbin7018 -> 12308 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nibbin10347 -> 21668 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nibbin12635 -> 18402 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.stringsbin8818 -> 7990 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nibbin7109 -> 12327 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nibbin10386 -> 21705 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nibbin12699 -> 18555 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.stringsbin9246 -> 8874 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nibbin0 -> 12451 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nibbin0 -> 21804 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nibbin0 -> 18645 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.stringsbin0 -> 7332 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nibbin7015 -> 12305 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nibbin10258 -> 21657 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nibbin12566 -> 18344 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.stringsbin9042 -> 9096 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nibbin7052 -> 12361 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nibbin10492 -> 21839 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nibbin12872 -> 18737 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.stringsbin8956 -> 9640 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nibbin0 -> 12451 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nibbin0 -> 21812 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nibbin0 -> 18453 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.stringsbin0 -> 5814 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nibbin7076 -> 12364 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nibbin10436 -> 21761 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nibbin12914 -> 18723 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.stringsbin9204 -> 8964 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.stringsbin0 -> 4936 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nibbin0 -> 12406 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nibbin0 -> 21814 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nibbin0 -> 18454 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/Sparkle.stringsbin0 -> 9352 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nibbin0 -> 12453 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nibbin0 -> 21867 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nibbin0 -> 18453 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/Sparkle.stringsbin0 -> 9600 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nibbin7013 -> 12375 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nibbin10221 -> 21774 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nibbin12780 -> 18643 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.stringsbin6772 -> 5478 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nibbin7002 -> 12311 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nibbin10353 -> 21699 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nibbin12716 -> 18580 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.stringsbin9136 -> 7920 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nibbin7103 -> 12315 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nibbin10436 -> 21679 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nibbin12524 -> 18273 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.stringsbin7518 -> 7718 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nibbin6919 -> 12283 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nibbin10079 -> 21633 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nibbin12417 -> 18280 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.stringsbin0 -> 5868 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nibbin0 -> 12327 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nibbin0 -> 21628 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nibbin0 -> 18536 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.stringsbin0 -> 8998 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nibbin7007 -> 12323 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nibbin10333 -> 21672 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nibbin12515 -> 18360 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.stringsbin9374 -> 8466 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nibbin7039 -> 12402 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nibbin10223 -> 21778 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nibbin12564 -> 18427 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.stringsbin9532 -> 8140 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nibbin7080 -> 12379 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nibbin10328 -> 21819 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nibbin12785 -> 18655 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.stringsbin8330 -> 9280 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nibbin7094 -> 12385 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nibbin10513 -> 21839 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nibbin12886 -> 18695 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.stringsbin8652 -> 7434 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nibbin7117 -> 12413 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nibbin10466 -> 21823 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nibbin12592 -> 18413 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.stringsbin9386 -> 9412 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nibbin7143 -> 12453 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nibbin10524 -> 21873 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nibbin12864 -> 18729 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.stringsbin8662 -> 7446 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nibbin7068 -> 12431 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nibbin10270 -> 21825 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nibbin12778 -> 18641 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.stringsbin0 -> 7168 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nibbin7103 -> 12341 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nibbin10232 -> 21737 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nibbin12751 -> 18560 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.stringsbin8778 -> 7562 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nibbin7022 -> 12390 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nibbin10385 -> 21799 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nibbin12727 -> 18556 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.stringsbin8600 -> 7406 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nibbin7087 -> 12377 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nibbin10342 -> 21742 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nibbin12658 -> 18475 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.stringsbin8946 -> 8118 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nibbin7179 -> 12415 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nibbin10477 -> 21747 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nibbin12731 -> 18600 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.stringsbin9284 -> 9246 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nibbin7233 -> 12471 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nibbin10624 -> 21893 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nibbin12774 -> 18638 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.stringsbin8644 -> 7466 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nibbin6938 -> 12249 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nibbin10244 -> 21577 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nibbin12334 -> 18199 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.stringsbin6908 -> 5484 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nibbin6891 -> 12255 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nibbin10040 -> 21594 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nibbin12315 -> 18209 bytes
-rw-r--r--OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.stringsbin6642 -> 5410 bytes
-rwxr-xr-xOSX/Sparkle.framework/Versions/A/Sparklebin403600 -> 625620 bytes
-rw-r--r--OSX/Updater.h13
-rw-r--r--OSX/Updater.m3
-rw-r--r--OSX/Updater.plist10
-rw-r--r--OSX/XScreenSaver.plist4
-rw-r--r--OSX/XScreenSaverConfigSheet.h4
-rw-r--r--OSX/XScreenSaverView.m4
-rw-r--r--OSX/bindist.rtf4
-rw-r--r--OSX/bindist2.webloc2
-rwxr-xr-xOSX/fuzztest.sh2
-rw-r--r--OSX/iSaverRunner.plist10
-rw-r--r--OSX/ios-function-table.m4
-rwxr-xr-xOSX/seticon.pl7
-rwxr-xr-xOSX/sparkle-bin/BinaryDeltabin0 -> 173948 bytes
-rw-r--r--OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Info.plist20
-rw-r--r--OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDeltabin0 -> 2245543 bytes
-rwxr-xr-xOSX/sparkle-bin/generate_appcastbin0 -> 9904192 bytes
-rw-r--r--OSX/sparkle-bin/generate_appcast.dSYM/Contents/Info.plist20
-rw-r--r--OSX/sparkle-bin/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcastbin0 -> 5953211 bytes
-rwxr-xr-xOSX/sparkle-bin/generate_keysbin0 -> 9556400 bytes
-rw-r--r--OSX/sparkle-bin/generate_keys.dSYM/Contents/Info.plist20
-rw-r--r--OSX/sparkle-bin/generate_keys.dSYM/Contents/Resources/DWARF/generate_keysbin0 -> 5388236 bytes
-rwxr-xr-xOSX/sparkle-bin/old_dsa_scripts/generate_dsa_keys_macos_10.12_only24
-rwxr-xr-xOSX/sparkle-bin/old_dsa_scripts/sign_update18
-rwxr-xr-xOSX/sparkle-bin/sign_updatebin0 -> 9785400 bytes
-rw-r--r--OSX/sparkle-bin/sign_update.dSYM/Contents/Info.plist20
-rw-r--r--OSX/sparkle-bin/sign_update.dSYM/Contents/Resources/DWARF/sign_updatebin0 -> 3891842 bytes
-rwxr-xr-xOSX/updates.pl62
-rw-r--r--OSX/updates.xml53
-rw-r--r--OSX/xscreensaver.xcodeproj/project.pbxproj195
-rw-r--r--README51
-rw-r--r--README.hacking6
-rw-r--r--aclocal.m45
-rw-r--r--android/Makefile1
-rw-r--r--android/build.gradle4
-rw-r--r--android/xscreensaver/.idea/caches/build_file_checksums.serbin521 -> 521 bytes
-rw-r--r--android/xscreensaver/.idea/misc.xml2
-rw-r--r--android/xscreensaver/.idea/workspace.xml236
-rw-r--r--android/xscreensaver/build.gradle8
-rw-r--r--android/xscreensaver/jni/Android.mk1
-rw-r--r--android/xscreensaver/jni/Application.mk4
-rw-r--r--android/xscreensaver/xscreensaver.iml16
-rw-r--r--config.h.in4
-rwxr-xr-xconfigure61
-rw-r--r--configure.in48
-rw-r--r--driver/Makefile.in11
-rw-r--r--driver/XScreenSaver.ad.in5
-rw-r--r--driver/XScreenSaver_ad.h1
-rw-r--r--driver/demo-Gtk.c5
-rw-r--r--driver/passwd.c46
-rw-r--r--driver/test-yarandom.c66
-rw-r--r--driver/xscreensaver.c12
-rw-r--r--hacks/Makefile.in227
-rw-r--r--hacks/abstractile.c9
-rw-r--r--hacks/analogtv-cli.c967
-rw-r--r--hacks/analogtv.c26
-rw-r--r--hacks/analogtv.h18
-rw-r--r--hacks/anemone.c3
-rw-r--r--hacks/anemotaxis.c3
-rw-r--r--hacks/apple2-main.c13
-rw-r--r--hacks/attraction.c5
-rw-r--r--hacks/barcode.c12
-rw-r--r--hacks/binaryring.c10
-rw-r--r--hacks/blaster.c2
-rw-r--r--hacks/blitspin.c21
-rw-r--r--hacks/boxfit.c6
-rw-r--r--hacks/bsod.c600
-rw-r--r--hacks/bubbles.c36
-rw-r--r--hacks/bumps.c6
-rw-r--r--hacks/ccurve.c5
-rw-r--r--hacks/celtic.c11
-rwxr-xr-xhacks/check-configs.pl26
-rw-r--r--hacks/cloudlife.c11
-rw-r--r--hacks/compass.c12
-rw-r--r--hacks/compile_axp.com1
-rw-r--r--hacks/compile_decc.com1
-rw-r--r--hacks/config/README4
-rw-r--r--hacks/config/bsod.xml2
-rw-r--r--hacks/config/handsy.xml58
-rw-r--r--hacks/config/ripples.xml3
-rw-r--r--hacks/config/unknownpleasures.xml19
-rw-r--r--hacks/coral.c4
-rw-r--r--hacks/critical.c9
-rw-r--r--hacks/cwaves.c5
-rw-r--r--hacks/cynosure.c5
-rw-r--r--hacks/decayscreen.c2
-rw-r--r--hacks/deco.c2
-rw-r--r--hacks/deluxe.c14
-rw-r--r--hacks/distort.c37
-rw-r--r--hacks/epicycle.c4
-rw-r--r--hacks/eruption.c17
-rw-r--r--hacks/filmleader.c31
-rw-r--r--hacks/fireworkx.c12
-rw-r--r--hacks/flag.c46
-rw-r--r--hacks/flame.c2
-rw-r--r--hacks/fluidballs.c11
-rw-r--r--hacks/fontglide.c31
-rw-r--r--hacks/fuzzyflakes.c5
-rw-r--r--hacks/glx/Makefile.in125
-rw-r--r--hacks/glx/antinspect.c12
-rw-r--r--hacks/glx/antmaze.c16
-rw-r--r--hacks/glx/antspotlight.c15
-rw-r--r--hacks/glx/atlantis.c19
-rw-r--r--hacks/glx/atunnel.c10
-rw-r--r--hacks/glx/b_draw.c4
-rw-r--r--hacks/glx/b_lockglue.c7
-rw-r--r--hacks/glx/b_sphere.c4
-rw-r--r--hacks/glx/blinkbox.c17
-rw-r--r--hacks/glx/blocktube.c19
-rw-r--r--hacks/glx/boing.c13
-rw-r--r--hacks/glx/bouncingcow.c22
-rw-r--r--hacks/glx/boxed.c30
-rw-r--r--hacks/glx/bubble3d.c22
-rw-r--r--hacks/glx/cage.c11
-rw-r--r--hacks/glx/carousel.c27
-rw-r--r--hacks/glx/circuit.c10
-rw-r--r--hacks/glx/cityflow.c21
-rw-r--r--hacks/glx/companion.c20
-rw-r--r--hacks/glx/crackberg.c43
-rw-r--r--hacks/glx/crumbler.c12
-rw-r--r--hacks/glx/cube21.c12
-rw-r--r--hacks/glx/cubenetic.c24
-rw-r--r--hacks/glx/cubestack.c15
-rw-r--r--hacks/glx/cubestorm.c22
-rw-r--r--hacks/glx/cubetwist.c6
-rw-r--r--hacks/glx/cubicgrid.c14
-rw-r--r--hacks/glx/dangerball.c18
-rw-r--r--hacks/glx/discoball.c8
-rw-r--r--hacks/glx/dnalogo.c35
-rwxr-xr-xhacks/glx/dxf2gl.pl51
-rw-r--r--hacks/glx/dymaxionmap.c28
-rw-r--r--hacks/glx/endgame.c19
-rw-r--r--hacks/glx/energystream.c19
-rw-r--r--hacks/glx/engine.c17
-rw-r--r--hacks/glx/esper.c29
-rw-r--r--hacks/glx/extrusion.c14
-rw-r--r--hacks/glx/flipflop.c6
-rw-r--r--hacks/glx/flipscreen3d.c13
-rw-r--r--hacks/glx/fliptext.c22
-rw-r--r--hacks/glx/flurry-texture.c5
-rw-r--r--hacks/glx/flurry.c18
-rw-r--r--hacks/glx/flurry.h3
-rw-r--r--hacks/glx/flyingtoasters.c24
-rw-r--r--hacks/glx/fps-gl.c15
-rw-r--r--hacks/glx/gears.c21
-rw-r--r--hacks/glx/geodesic.c15
-rw-r--r--hacks/glx/geodesicgears.c14
-rw-r--r--hacks/glx/gflux.c12
-rw-r--r--hacks/glx/glblur.c26
-rw-r--r--hacks/glx/glcells.c34
-rw-r--r--hacks/glx/gleidescope.c19
-rw-r--r--hacks/glx/glforestfire.c15
-rw-r--r--hacks/glx/glhanoi.c47
-rw-r--r--hacks/glx/glknots.c16
-rw-r--r--hacks/glx/glmatrix.c14
-rw-r--r--hacks/glx/glplanet.c23
-rw-r--r--hacks/glx/glschool.c21
-rw-r--r--hacks/glx/glslideshow.c26
-rw-r--r--hacks/glx/glsnake.c17
-rw-r--r--hacks/glx/gltext.c12
-rw-r--r--hacks/glx/gltrackball.c7
-rw-r--r--hacks/glx/gltrackball.h1
-rw-r--r--hacks/glx/handsy.c1175
-rw-r--r--hacks/glx/handsy.dxf67706
-rw-r--r--hacks/glx/handsy.man76
-rw-r--r--hacks/glx/handsy_anim.h805
-rw-r--r--hacks/glx/handsy_model.c6684
-rw-r--r--hacks/glx/hexstrut.c9
-rw-r--r--hacks/glx/hilbert.c27
-rw-r--r--hacks/glx/hydrostat.c22
-rw-r--r--hacks/glx/hypertorus.c14
-rw-r--r--hacks/glx/hypnowheel.c19
-rw-r--r--hacks/glx/jigglypuff.c148
-rw-r--r--hacks/glx/jigsaw.c19
-rw-r--r--hacks/glx/juggler3d.c14
-rw-r--r--hacks/glx/kaleidocycle.c16
-rw-r--r--hacks/glx/klein.c15
-rw-r--r--hacks/glx/lament.c20
-rw-r--r--hacks/glx/lavalite.c18
-rw-r--r--hacks/glx/lockward.c12
-rwxr-xr-xhacks/glx/maze3d.c12
-rw-r--r--[-rwxr-xr-x]hacks/glx/maze3d.man0
-rw-r--r--hacks/glx/menger.c18
-rw-r--r--hacks/glx/mirrorblob.c12
-rw-r--r--hacks/glx/moebius.c14
-rw-r--r--hacks/glx/moebiusgears.c15
-rw-r--r--hacks/glx/molecule.c56
-rw-r--r--hacks/glx/morph3d.c9
-rw-r--r--hacks/glx/noof.c14
-rw-r--r--hacks/glx/peepers.c22
-rw-r--r--hacks/glx/photopile.c22
-rw-r--r--hacks/glx/pinion.c22
-rw-r--r--hacks/glx/pipes.c77
-rw-r--r--hacks/glx/polyhedra-gl.c24
-rw-r--r--hacks/glx/polyhedra.c1
-rw-r--r--hacks/glx/polytopes.c14
-rw-r--r--hacks/glx/projectiveplane.c15
-rw-r--r--hacks/glx/providence.c17
-rw-r--r--hacks/glx/pulsar.c5
-rw-r--r--hacks/glx/quasicrystal.c21
-rw-r--r--hacks/glx/queens.c17
-rw-r--r--hacks/glx/quickhull.h11
-rw-r--r--hacks/glx/raverhoop.c28
-rw-r--r--hacks/glx/razzledazzle.c6
-rw-r--r--hacks/glx/romanboy.c21
-rw-r--r--hacks/glx/rubik.c21
-rw-r--r--hacks/glx/rubikblocks.c16
-rw-r--r--hacks/glx/sballs.c34
-rw-r--r--hacks/glx/sierpinski3d.c21
-rw-r--r--hacks/glx/skytentacles.c28
-rw-r--r--hacks/glx/sonar-icmp.c8
-rw-r--r--hacks/glx/sonar.c35
-rw-r--r--hacks/glx/spheremonics.c18
-rw-r--r--hacks/glx/splitflap.c28
-rw-r--r--hacks/glx/splodesic.c9
-rw-r--r--hacks/glx/sproingies.c2
-rw-r--r--hacks/glx/sproingiewrap.c11
-rw-r--r--hacks/glx/stairs.c11
-rw-r--r--hacks/glx/starwars.c18
-rw-r--r--hacks/glx/stonerview.c5
-rw-r--r--hacks/glx/superquadrics.c9
-rw-r--r--hacks/glx/surfaces.c15
-rw-r--r--hacks/glx/tangram.c14
-rw-r--r--hacks/glx/texfont.c3
-rw-r--r--hacks/glx/timetunnel.c28
-rw-r--r--hacks/glx/topblock.c23
-rw-r--r--hacks/glx/tronbit.c20
-rw-r--r--hacks/glx/unicrud.c16
-rw-r--r--hacks/glx/unknownpleasures.c698
-rw-r--r--hacks/glx/unknownpleasures.man32
-rw-r--r--hacks/glx/vigilance.c30
-rw-r--r--hacks/glx/voronoi.c20
-rw-r--r--hacks/glx/winduprobot.c30
-rw-r--r--hacks/glx/xlock-gl-utils.c1
-rw-r--r--hacks/halftone.c11
-rw-r--r--hacks/halo.c11
-rw-r--r--hacks/helix.c1
-rw-r--r--hacks/hexadrop.c4
-rw-r--r--hacks/hyperball.c5
-rw-r--r--hacks/hypercube.c6
-rw-r--r--hacks/ifs.c1
-rw-r--r--hacks/images/dvd.pngbin0 -> 2727 bytes
-rw-r--r--hacks/images/sun.pngbin0 -> 415 bytes
-rw-r--r--hacks/imsmap.c7
-rw-r--r--hacks/interaggregate.c7
-rw-r--r--hacks/interference.c7
-rw-r--r--hacks/intermomentary.c16
-rw-r--r--hacks/juggle.c1
-rw-r--r--hacks/kaleidescope.c25
-rw-r--r--hacks/kumppa.c2
-rw-r--r--hacks/lmorph.c13
-rw-r--r--hacks/m6502.c2
-rw-r--r--hacks/maze.c10
-rw-r--r--hacks/memscroller.c47
-rw-r--r--hacks/metaballs.c25
-rw-r--r--hacks/moire.c7
-rw-r--r--hacks/moire2.c6
-rw-r--r--hacks/munch.c6
-rw-r--r--hacks/nerverot.c4
-rw-r--r--hacks/noseguy.c39
-rw-r--r--hacks/pacman.c5
-rw-r--r--hacks/pedal.c3
-rw-r--r--hacks/penetrate.c5
-rw-r--r--hacks/petri.c12
-rw-r--r--hacks/phosphor.c26
-rw-r--r--hacks/piecewise.c39
-rw-r--r--hacks/pong.c2
-rw-r--r--hacks/popsquares.c3
-rw-r--r--hacks/pyro.c4
-rw-r--r--hacks/qix.c37
-rw-r--r--hacks/rd-bomb.c11
-rw-r--r--hacks/recanim.c64
-rw-r--r--hacks/ripples.c13
-rw-r--r--hacks/rocks.c11
-rw-r--r--hacks/rorschach.c1
-rw-r--r--hacks/rotzoomer.c18
-rw-r--r--hacks/screenhack.c34
-rw-r--r--hacks/screenhack.h5
-rw-r--r--hacks/screenhackI.h1
-rw-r--r--hacks/shadebobs.c4
-rw-r--r--hacks/slidescreen.c2
-rw-r--r--hacks/speedmine.c11
-rw-r--r--hacks/squiral.c6
-rw-r--r--hacks/starfish.c4
-rw-r--r--hacks/strange.c2
-rw-r--r--hacks/substrate.c6
-rw-r--r--hacks/t3d.c10
-rw-r--r--hacks/tessellimage.c2
-rw-r--r--hacks/truchet.c4
-rw-r--r--hacks/twang.c8
-rw-r--r--hacks/vermiculate.c28
-rw-r--r--hacks/vfeedback.c1
-rw-r--r--hacks/wander.c1
-rw-r--r--hacks/whirlwindwarp.c2
-rw-r--r--hacks/whirlygig.c7
-rw-r--r--hacks/wormhole.c29
-rw-r--r--hacks/xanalogtv.c50
-rw-r--r--hacks/xflame.c15
-rw-r--r--hacks/ximage-loader.c11
-rw-r--r--hacks/xjack.c3
-rw-r--r--hacks/xlockmore.c3
-rw-r--r--hacks/xlockmore.h6
-rw-r--r--hacks/xlockmoreI.h1
-rw-r--r--hacks/xlyap.c9
-rw-r--r--hacks/xmatrix.c19
-rw-r--r--hacks/xrayswarm.c5
-rw-r--r--hacks/xspirograph.c1
-rw-r--r--jwxyz/jwxyz.h1
-rw-r--r--po/POTFILES.in3
-rw-r--r--utils/Makefile.in2
-rw-r--r--utils/colors.c15
-rw-r--r--utils/erase.c2
-rw-r--r--utils/font-retry.c43
-rw-r--r--utils/textclient-mobile.c14
-rw-r--r--utils/version.h2
-rw-r--r--utils/yarandom.h34
-rw-r--r--xscreensaver.spec2
511 files changed, 83882 insertions, 1761 deletions
diff --git a/OSX/LaunchScreen.xib b/OSX/LaunchScreen.xib
index 731d86e..15cdbc5 100644
--- a/OSX/LaunchScreen.xib
+++ b/OSX/LaunchScreen.xib
@@ -1,8 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES">
+ <device id="retina4_7" orientation="portrait">
+ <adaptation id="fullscreen"/>
+ </device>
<dependencies>
<deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
@@ -10,7 +14,7 @@
<view contentMode="scaleToFill" id="iN0-l3-epB">
<rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
+ <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="simulatedStatusBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<point key="canvasLocation" x="404" y="445"/>
diff --git a/OSX/Makefile b/OSX/Makefile
index 373df6b..456c1bd 100644
--- a/OSX/Makefile
+++ b/OSX/Makefile
@@ -43,7 +43,14 @@ release:: distdepend
release:: check_versions
Sparkle.framework:
- unzip ../archive/Sparkle.framework-2013-12-04.zip
+ rm -rf bin sparkle-bin
+ tar -vxjf ../archive/Sparkle-1.21.2.tar.bz2 \
+ --exclude CHANGELOG \
+ --exclude LICENSE \
+ --exclude SampleAppcast.xml \
+ --exclude Sparkle.framework.dSYM \
+ --exclude Sparkle\ Test\ App\*
+ mv bin sparkle-bin
# Download and resize images from jwz.org.
# This saves us having to include 4MB of images in the tar file
@@ -54,7 +61,7 @@ Sparkle.framework:
BASE = xscreensaver/screenshots/
URL = https://www.jwz.org/$(BASE)
-WGET = wget -q -U xscreensaver-build-osx
+WGET = wget -q -U xscreensaver-build-osx --content-on-error=0
CVT = -thumbnail '200x150^' -gravity center -extent 200x150 \
\( +clone -alpha extract \
-draw 'fill black polygon 0,0 0,6 6,0 fill white circle 6,6 6,0' \
@@ -280,11 +287,12 @@ build/Release/installer.pkg: installer.rtf installer.xml installer.sh installer.
# -format UDBZ saves 4% (~1.2 MB) over UDZO.
-dmg:: distdepend
-dmg:: check_versions check_coretext
+dmg:: distdepend check_versions check_coretext
#dmg:: check_gc
dmg:: build/Release/installer.pkg
-dmg::
+dmg:: _dmg notarize
+
+_dmg::
@ \
set -e ; \
SRC=../utils/version.h ; \
@@ -369,7 +377,68 @@ dmg::
"$$TMPDMG" -o "$$DMG" ; \
xattr -w com.apple.quarantine "0000;00000000;;" "$$DMG" ; \
rm -f "$$TMPDMG" ; \
- ls -ldhgF "$$DMG"
+ ls -ldhgF "$$DMG" ; \
+ $(MAKE) notarize ; \
+
+
+# To set up notarization:
+# - Log in on https://appleid.apple.com/
+# - Generate App-Specific Password, "altool-notarizer"
+# - Keychain Access / New
+# - Name: "altool-notarizer", Account: "jwz@jwz.org",
+# Pass: the one you just generated.
+#
+# "make notarize", which will upload the DMG (slow).
+# A response will be emailed back in about an hour.
+# When that arrives, "make staple".
+#
+# https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution/customizing_the_notarization_workflow?language=objc
+#
+# Note that if Sparkle.framework/.../Autoupdate.app is not independently
+# signed, it won't pass. I had to add a build phase for that.
+#
+NOTARGS=-u "jwz@jwz.org" -p "@keychain:altool-notarizer"
+
+notarize::
+ @ \
+ set -e ; \
+ SRC=../utils/version.h ; \
+ V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' $$SRC` ; \
+ BASE="xscreensaver-$$V" ; \
+ OUTDIR="../archive" ; \
+ DMG="$$OUTDIR/$$BASE.dmg" ; \
+ set -x ; \
+ xcrun altool --notarize-app --primary-bundle-id "org.jwz.xscreensaver" \
+ --file "$$DMG" $(NOTARGS) ; \
+ echo "" ; \
+ sleep 3 ; \
+ $(MAKE) notarize_wait staple updates.xml
+
+notarize_wait::
+ @while ( xcrun altool --notarization-history 0 $(NOTARGS) | \
+ grep -q 'in progress' ); do \
+ echo `date +%I:%M:` "waiting for notarization..." ; \
+ sleep 15 ; \
+ done ; \
+ echo '' ; \
+ xcrun altool --notarization-history 0 $(NOTARGS) ; \
+
+staple::
+ @ \
+ set -e ; \
+ SRC=../utils/version.h ; \
+ V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' $$SRC` ; \
+ BASE="xscreensaver-$$V" ; \
+ OUTDIR="../archive" ; \
+ DMG="$$OUTDIR/$$BASE.dmg" ; \
+ set -x ; \
+ xcrun stapler staple "$$DMG" ; \
+ xcrun stapler validate "$$DMG"
+
+notarization_history::
+ xcrun altool --notarization-history 0 $(NOTARGS)
+ @echo 'now do: xcrun altool $(NOTARGS) --notarization-info <UUID>' ; \
+ echo 'and wget the LogFileURL'
# When debugging, sometimes I have to reset the preferences for all
diff --git a/OSX/Media-iOS.xcassets/LaunchImage.launchimage/Contents.json b/OSX/Media-iOS.xcassets/LaunchImage.launchimage/Contents.json
index 5dd89e0..bc0812f 100644
--- a/OSX/Media-iOS.xcassets/LaunchImage.launchimage/Contents.json
+++ b/OSX/Media-iOS.xcassets/LaunchImage.launchimage/Contents.json
@@ -1,6 +1,24 @@
{
"images" : [
{
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "736h",
+ "filename" : "1242x2208.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "portrait",
+ "scale" : "3x"
+ },
+ {
+ "extent" : "full-screen",
+ "idiom" : "iphone",
+ "subtype" : "667h",
+ "filename" : "750x1334.png",
+ "minimum-system-version" : "8.0",
+ "orientation" : "portrait",
+ "scale" : "2x"
+ },
+ {
"orientation" : "portrait",
"idiom" : "iphone",
"filename" : "640x960.png",
@@ -24,25 +42,7 @@
"extent" : "full-screen",
"subtype" : "retina4",
"scale" : "2x"
- },
- {
- "extent" : "full-screen",
- "idiom" : "iphone",
- "subtype" : "667h",
- "filename" : "750x1334.png",
- "minimum-system-version" : "8.0",
- "orientation" : "portrait",
- "scale" : "2x"
- },
- {
- "extent" : "full-screen",
- "idiom" : "iphone",
- "subtype" : "736h",
- "filename" : "1242x2208.png",
- "minimum-system-version" : "8.0",
- "orientation" : "portrait",
- "scale" : "3x"
- },
+ }
],
"info" : {
"version" : 1,
diff --git a/OSX/README b/OSX/README
index 0799995..e57d5a7 100644
--- a/OSX/README
+++ b/OSX/README
@@ -20,7 +20,8 @@ ridiculously long list of steps!
5: Delete the "DangerBall copy-Info.plist" from the Build Settings too.
6: Manage Schemes, rename "DangerBall Copy".
7: Move to the right place in the list.
- 8: Scheme / Run / Info: Executable: SaverTester.app.
+ 8. Scheme / Profile / Info: Executable: SaverTester.app.
+ Scheme / Run / Info: Executable: SaverTester.app.
9: Scheme / Run / Arguments: set SELECTED_SAVER environment variable.
10: File / Add Files / the new .c and .xml.
11: Re-order them in the file list. This will bring up an Options dialog.
@@ -38,5 +39,5 @@ ridiculously long list of steps!
18: git add xscreensaver.xcodeproj/xcuserdata/*/xcschemes/*.xcscheme
19: Don't forget to create a man page from the XML with xml2man.pl,
and update Makefile.in.
- 20: Make a video: -record-animation 3600 -delay 1 -geom 1920x1080+128+64
+ 20: Make a video: -record-animation 3600 -geom 1920x1080+128+64
./upload-video.pl NAME
diff --git a/OSX/SaverListController.m b/OSX/SaverListController.m
index 9377275..e68387c 100644
--- a/OSX/SaverListController.m
+++ b/OSX/SaverListController.m
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2012-2014 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2012-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -225,6 +225,8 @@
for (int i = 0; i < n; i++) {
if ([list_by_letter[i] count] > 0) {
active_section_count++;
+ [list_by_letter[i] sortUsingSelector:
+ @selector(localizedCaseInsensitiveCompare:)];
[letter_sections addObject: list_by_letter[i]];
if (i <= 'Z'-'A')
[section_titles addObject: [NSString stringWithFormat: @"%c", i+'A']];
diff --git a/OSX/SaverRunner.h b/OSX/SaverRunner.h
index 073a87e..399eec0 100644
--- a/OSX/SaverRunner.h
+++ b/OSX/SaverRunner.h
@@ -31,7 +31,7 @@
# import <ScreenSaver/ScreenSaver.h>
#endif
-#import <XScreenSaverView.h>
+#import "XScreenSaverView.h"
#ifdef USE_IPHONE
diff --git a/OSX/SaverRunner.m b/OSX/SaverRunner.m
index f358fb7..8ab45c1 100644
--- a/OSX/SaverRunner.m
+++ b/OSX/SaverRunner.m
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2006-2017 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -1035,10 +1035,11 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
if (name) [result addObject: name];
}
- if (! [result count])
- result = 0;
-
- return result;
+ if (result && [result count])
+ return [result sortedArrayUsingSelector:
+ @selector(localizedCaseInsensitiveCompare:)];
+ else
+ return 0;
}
diff --git a/OSX/SaverRunner.plist b/OSX/SaverRunner.plist
index 3ad0ce7..1a5f022 100644
--- a/OSX/SaverRunner.plist
+++ b/OSX/SaverRunner.plist
@@ -7,7 +7,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleGetInfoString</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>CFBundleIconFile</key>
<string>SaverRunner</string>
<key>CFBundleIdentifier</key>
@@ -15,21 +15,21 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>NSMainNibFile</key>
<string>SaverRunner</string>
<key>NSPrincipalClass</key>
diff --git a/OSX/Sparkle.framework/Modules b/OSX/Sparkle.framework/Modules
new file mode 120000
index 0000000..5736f31
--- /dev/null
+++ b/OSX/Sparkle.framework/Modules
@@ -0,0 +1 @@
+Versions/Current/Modules \ No newline at end of file
diff --git a/OSX/Sparkle.framework/PrivateHeaders b/OSX/Sparkle.framework/PrivateHeaders
new file mode 120000
index 0000000..d8e5645
--- /dev/null
+++ b/OSX/Sparkle.framework/PrivateHeaders
@@ -0,0 +1 @@
+Versions/Current/PrivateHeaders \ No newline at end of file
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloadData.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloadData.h
new file mode 100644
index 0000000..41cd574
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloadData.h
@@ -0,0 +1,43 @@
+//
+// SPUDownloadData.h
+// Sparkle
+//
+// Created by Mayur Pawashe on 8/10/16.
+// Copyright © 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+
+#import "SUExport.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ * A class for containing downloaded data along with some information about it.
+ */
+SU_EXPORT @interface SPUDownloadData : NSObject <NSSecureCoding>
+
+- (instancetype)initWithData:(NSData *)data textEncodingName:(NSString * _Nullable)textEncodingName MIMEType:(NSString * _Nullable)MIMEType;
+
+/*!
+ * The raw data that was downloaded.
+ */
+@property (nonatomic, readonly) NSData *data;
+
+/*!
+ * The IANA charset encoding name if available. Eg: "utf-8"
+ */
+@property (nonatomic, readonly, nullable, copy) NSString *textEncodingName;
+
+/*!
+ * The MIME type if available. Eg: "text/plain"
+ */
+@property (nonatomic, readonly, nullable, copy) NSString *MIMEType;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloader.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloader.h
new file mode 100644
index 0000000..5eee9bd
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloader.h
@@ -0,0 +1,25 @@
+//
+// SPUDownloader.h
+// Downloader
+//
+// Created by Mayur Pawashe on 4/1/16.
+// Copyright © 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SPUDownloaderProtocol.h"
+
+@protocol SPUDownloaderDelegate;
+
+// This object implements the protocol which we have defined. It provides the actual behavior for the service. It is 'exported' by the service to make it available to the process hosting the service over an NSXPCConnection.
+@interface SPUDownloader : NSObject <SPUDownloaderProtocol>
+
+// Due to XPC remote object reasons, this delegate is strongly referenced
+// Invoke cleanup when done with this instance
+- (instancetype)initWithDelegate:(id <SPUDownloaderDelegate>)delegate;
+
+@end
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDelegate.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDelegate.h
new file mode 100644
index 0000000..76e7e75
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDelegate.h
@@ -0,0 +1,38 @@
+//
+// SPUDownloaderDelegate.h
+// Sparkle
+//
+// Created by Mayur Pawashe on 4/1/16.
+// Copyright © 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class SPUDownloadData;
+
+@protocol SPUDownloaderDelegate <NSObject>
+
+// This is only invoked for persistent downloads
+- (void)downloaderDidSetDestinationName:(NSString *)destinationName temporaryDirectory:(NSString *)temporaryDirectory;
+
+// Under rare cases, this may be called more than once, in which case the current progress should be reset back to 0
+// This is only invoked for persistent downloads
+- (void)downloaderDidReceiveExpectedContentLength:(int64_t)expectedContentLength;
+
+// This is only invoked for persistent downloads
+- (void)downloaderDidReceiveDataOfLength:(uint64_t)length;
+
+// downloadData is nil if this is a persisent download, otherwise it's non-nil if it's a temporary download
+- (void)downloaderDidFinishWithTemporaryDownloadData:(SPUDownloadData * _Nullable)downloadData;
+
+- (void)downloaderDidFailWithError:(NSError *)error;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h
new file mode 100644
index 0000000..36302df
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h
@@ -0,0 +1,13 @@
+//
+// SPUDownloaderDeprecated.h
+// Sparkle
+//
+// Created by Deadpikle on 12/20/17.
+// Copyright © 2017 Sparkle Project. All rights reserved.
+//
+
+#import "SPUDownloader.h"
+
+@interface SPUDownloaderDeprecated : SPUDownloader <SPUDownloaderProtocol>
+
+@end
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderProtocol.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderProtocol.h
new file mode 100644
index 0000000..ebe477f
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderProtocol.h
@@ -0,0 +1,34 @@
+//
+// SPUDownloaderProtocol.h
+// PersistentDownloader
+//
+// Created by Mayur Pawashe on 4/1/16.
+// Copyright © 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class SPUURLRequest;
+
+// The protocol that this service will vend as its API. This header file will also need to be visible to the process hosting the service.
+@protocol SPUDownloaderProtocol
+
+- (void)startPersistentDownloadWithRequest:(SPUURLRequest *)request bundleIdentifier:(NSString *)bundleIdentifier desiredFilename:(NSString *)desiredFilename;
+
+- (void)startTemporaryDownloadWithRequest:(SPUURLRequest *)request;
+
+- (void)downloadDidFinish;
+
+- (void)cleanup;
+
+- (void)cancel;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h
new file mode 100644
index 0000000..4bde75a
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h
@@ -0,0 +1,20 @@
+//
+// SPUDownloaderSession.h
+// Sparkle
+//
+// Created by Deadpikle on 12/20/17.
+// Copyright © 2017 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SPUDownloader.h"
+#import "SPUDownloaderProtocol.h"
+
+NS_CLASS_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0)
+@interface SPUDownloaderSession : SPUDownloader <SPUDownloaderProtocol>
+
+@end
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUURLRequest.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUURLRequest.h
new file mode 100644
index 0000000..6949614
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SPUURLRequest.h
@@ -0,0 +1,35 @@
+//
+// SPUURLRequest.h
+// Sparkle
+//
+// Created by Mayur Pawashe on 5/19/16.
+// Copyright © 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+// A class that wraps NSURLRequest and implements NSSecureCoding
+// This class exists because NSURLRequest did not support NSSecureCoding in macOS 10.8
+// I have not verified if NSURLRequest in 10.9 implements NSSecureCoding or not
+@interface SPUURLRequest : NSObject <NSSecureCoding>
+
+// Creates a new URL request
+// Only these properties are currently tracked:
+// * URL
+// * Cache policy
+// * Timeout interval
+// * HTTP header fields
+// * networkServiceType
++ (instancetype)URLRequestWithRequest:(NSURLRequest *)request;
+
+@property (nonatomic, readonly) NSURLRequest *request;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUAppcast.h b/OSX/Sparkle.framework/Versions/A/Headers/SUAppcast.h
index 5a60d2f..34276b7 100755..100644
--- a/OSX/Sparkle.framework/Versions/A/Headers/SUAppcast.h
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SUAppcast.h
@@ -9,28 +9,27 @@
#ifndef SUAPPCAST_H
#define SUAPPCAST_H
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
@class SUAppcastItem;
-@interface SUAppcast : NSObject
-{
-@private
- NSArray *items;
- NSString *userAgentString;
- id delegate;
- NSString *downloadFilename;
- NSURLDownload *download;
-}
-
-- (void)fetchAppcastFromURL:(NSURL *)url;
-- (void)setDelegate:delegate;
-- (void)setUserAgentString:(NSString *)userAgentString;
-
-- (NSArray *)items;
+SU_EXPORT @interface SUAppcast : NSObject
-@end
+@property (copy, nullable) NSString *userAgentString;
+@property (copy, nullable) NSDictionary<NSString *, NSString *> *httpHeaders;
+
+- (void)fetchAppcastFromURL:(NSURL *)url inBackground:(BOOL)bg completionBlock:(void (^)(NSError *_Nullable))err;
+- (SUAppcast *)copyWithoutDeltaUpdates;
-@interface NSObject (SUAppcastDelegate)
-- (void)appcastDidFinishLoading:(SUAppcast *)appcast;
-- (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error;
+@property (readonly, copy, nullable) NSArray *items;
@end
+NS_ASSUME_NONNULL_END
+
#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h b/OSX/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h
index d6f9c64..c0380dd 100755..100644
--- a/OSX/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h
@@ -9,51 +9,43 @@
#ifndef SUAPPCASTITEM_H
#define SUAPPCASTITEM_H
-@interface SUAppcastItem : NSObject
-{
-@private
- NSString *title;
- NSDate *date;
- NSString *itemDescription;
-
- NSURL *releaseNotesURL;
-
- NSString *DSASignature;
- NSString *minimumSystemVersion;
- NSString *maximumSystemVersion;
-
- NSURL *fileURL;
- NSString *versionString;
- NSString *displayVersionString;
-
- NSDictionary *deltaUpdates;
-
- NSDictionary *propertiesDictionary;
-
- NSURL *infoURL; // UK 2007-08-31
-}
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
+@class SUSignatures;
+
+SU_EXPORT @interface SUAppcastItem : NSObject
+@property (copy, readonly) NSString *title;
+@property (copy, readonly) NSString *dateString;
+@property (copy, readonly) NSString *itemDescription;
+@property (strong, readonly) NSURL *releaseNotesURL;
+@property (strong, readonly) SUSignatures *signatures;
+@property (copy, readonly) NSString *minimumSystemVersion;
+@property (copy, readonly) NSString *maximumSystemVersion;
+@property (strong, readonly) NSURL *fileURL;
+@property (nonatomic, readonly) uint64_t contentLength;
+@property (copy, readonly) NSString *versionString;
+@property (copy, readonly) NSString *osString;
+@property (copy, readonly) NSString *displayVersionString;
+@property (copy, readonly) NSDictionary *deltaUpdates;
+@property (strong, readonly) NSURL *infoURL;
// Initializes with data from a dictionary provided by the RSS class.
-- initWithDictionary:(NSDictionary *)dict;
-- initWithDictionary:(NSDictionary *)dict failureReason:(NSString**)error;
-
-- (NSString *)title;
-- (NSString *)versionString;
-- (NSString *)displayVersionString;
-- (NSDate *)date;
-- (NSString *)itemDescription;
-- (NSURL *)releaseNotesURL;
-- (NSURL *)fileURL;
-- (NSString *)DSASignature;
-- (NSString *)minimumSystemVersion;
-- (NSString *)maximumSystemVersion;
-- (NSDictionary *)deltaUpdates;
-- (BOOL)isDeltaUpdate;
+- (instancetype)initWithDictionary:(NSDictionary *)dict;
+- (instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString **)error;
+
+@property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate;
+@property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate;
+@property (getter=isMacOsUpdate, readonly) BOOL macOsUpdate;
+@property (getter=isInformationOnlyUpdate, readonly) BOOL informationOnlyUpdate;
// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions.
-- (NSDictionary *)propertiesDictionary;
+@property (readonly, copy) NSDictionary *propertiesDictionary;
-- (NSURL *)infoURL; // UK 2007-08-31
+- (NSURL *)infoURL;
@end
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUCodeSigningVerifier.h b/OSX/Sparkle.framework/Versions/A/Headers/SUCodeSigningVerifier.h
new file mode 100644
index 0000000..f034cd2
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SUCodeSigningVerifier.h
@@ -0,0 +1,22 @@
+//
+// SUCodeSigningVerifier.h
+// Sparkle
+//
+// Created by Andy Matuschak on 7/5/12.
+//
+//
+
+#ifndef SUCODESIGNINGVERIFIER_H
+#define SUCODESIGNINGVERIFIER_H
+
+#import <Foundation/Foundation.h>
+#import "SUExport.h"
+
+SU_EXPORT @interface SUCodeSigningVerifier : NSObject
++ (BOOL)codeSignatureAtBundleURL:(NSURL *)oldBundlePath matchesSignatureAtBundleURL:(NSURL *)newBundlePath error:(NSError **)error;
++ (BOOL)codeSignatureIsValidAtBundleURL:(NSURL *)bundlePath error:(NSError **)error;
++ (BOOL)bundleAtURLIsCodeSigned:(NSURL *)bundlePath;
++ (NSDictionary *)codeSignatureInfoAtBundleURL:(NSURL *)bundlePath;
+@end
+
+#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUErrors.h b/OSX/Sparkle.framework/Versions/A/Headers/SUErrors.h
new file mode 100644
index 0000000..7d2e73a
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SUErrors.h
@@ -0,0 +1,56 @@
+//
+// SUErrors.h
+// Sparkle
+//
+// Created by C.W. Betts on 10/13/14.
+// Copyright (c) 2014 Sparkle Project. All rights reserved.
+//
+
+#ifndef SUERRORS_H
+#define SUERRORS_H
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
+
+/**
+ * Error domain used by Sparkle
+ */
+SU_EXPORT extern NSString *const SUSparkleErrorDomain;
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc++98-compat"
+typedef NS_ENUM(OSStatus, SUError) {
+ // Appcast phase errors.
+ SUAppcastParseError = 1000,
+ SUNoUpdateError = 1001,
+ SUAppcastError = 1002,
+ SURunningFromDiskImageError = 1003,
+
+ // Download phase errors.
+ SUTemporaryDirectoryError = 2000,
+ SUDownloadError = 2001,
+
+ // Extraction phase errors.
+ SUUnarchivingError = 3000,
+ SUSignatureError = 3001,
+
+ // Installation phase errors.
+ SUFileCopyFailure = 4000,
+ SUAuthenticationFailure = 4001,
+ SUMissingUpdateError = 4002,
+ SUMissingInstallerToolError = 4003,
+ SURelaunchError = 4004,
+ SUInstallationError = 4005,
+ SUDowngradeError = 4006,
+ SUInstallationCancelledError = 4007,
+
+ // System phase errors
+ SUSystemPowerOffError = 5000
+};
+#pragma clang diagnostic pop
+
+#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUExport.h b/OSX/Sparkle.framework/Versions/A/Headers/SUExport.h
new file mode 100644
index 0000000..3e3f8a1
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SUExport.h
@@ -0,0 +1,18 @@
+//
+// SUExport.h
+// Sparkle
+//
+// Created by Jake Petroules on 2014-08-23.
+// Copyright (c) 2014 Sparkle Project. All rights reserved.
+//
+
+#ifndef SUEXPORT_H
+#define SUEXPORT_H
+
+#ifdef BUILDING_SPARKLE
+#define SU_EXPORT __attribute__((visibility("default")))
+#else
+#define SU_EXPORT
+#endif
+
+#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h b/OSX/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h
new file mode 100644
index 0000000..ed11921
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h
@@ -0,0 +1,52 @@
+//
+// SUStandardVersionComparator.h
+// Sparkle
+//
+// Created by Andy Matuschak on 12/21/07.
+// Copyright 2007 Andy Matuschak. All rights reserved.
+//
+
+#ifndef SUSTANDARDVERSIONCOMPARATOR_H
+#define SUSTANDARDVERSIONCOMPARATOR_H
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
+#import "SUVersionComparisonProtocol.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ Sparkle's default version comparator.
+
+ This comparator is adapted from MacPAD, by Kevin Ballard.
+ It's "dumb" in that it does essentially string comparison,
+ in components split by character type.
+*/
+SU_EXPORT @interface SUStandardVersionComparator : NSObject <SUVersionComparison>
+
+/*!
+ Initializes a new instance of the standard version comparator.
+ */
+- (instancetype)init;
+
+/*!
+ Returns a singleton instance of the comparator.
+
+ It is usually preferred to alloc/init new a comparator instead.
+*/
++ (SUStandardVersionComparator *)defaultComparator;
+
+/*!
+ Compares version strings through textual analysis.
+
+ See the implementation for more details.
+*/
+- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;
+@end
+
+NS_ASSUME_NONNULL_END
+#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUUpdater.h b/OSX/Sparkle.framework/Versions/A/Headers/SUUpdater.h
index cd79566..bc1d491 100755..100644
--- a/OSX/Sparkle.framework/Versions/A/Headers/SUUpdater.h
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SUUpdater.h
@@ -9,153 +9,223 @@
#ifndef SUUPDATER_H
#define SUUPDATER_H
+#if __has_feature(modules)
+@import Cocoa;
+#else
+#import <Cocoa/Cocoa.h>
+#endif
+#import "SUExport.h"
#import "SUVersionComparisonProtocol.h"
#import "SUVersionDisplayProtocol.h"
-@class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast;
+@class SUAppcastItem, SUAppcast;
+
+@protocol SUUpdaterDelegate;
+
+/*!
+ The main API in Sparkle for controlling the update mechanism.
-@interface SUUpdater : NSObject
-{
-@private
- NSTimer *checkTimer;
- SUUpdateDriver *driver;
+ This class is used to configure the update paramters as well as manually
+ and automatically schedule and control checks for updates.
+ */
+SU_EXPORT @interface SUUpdater : NSObject
- NSString *customUserAgentString;
- SUHost *host;
- IBOutlet id delegate;
-}
+@property (unsafe_unretained) IBOutlet id<SUUpdaterDelegate> delegate;
+/*!
+ The shared updater for the main bundle.
+
+ This is equivalent to passing [NSBundle mainBundle] to SUUpdater::updaterForBundle:
+ */
+ (SUUpdater *)sharedUpdater;
-+ (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
-- (id)initForBundle:(NSBundle *)bundle;
-- (NSBundle *)hostBundle;
+/*!
+ The shared updater for a specified bundle.
+
+ If an updater has already been initialized for the provided bundle, that shared instance will be returned.
+ */
++ (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
-- (void)setDelegate:(id)delegate;
-- (id)delegate;
+/*!
+ Designated initializer for SUUpdater.
+
+ If an updater has already been initialized for the provided bundle, that shared instance will be returned.
+ */
+- (instancetype)initForBundle:(NSBundle *)bundle;
-- (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks;
-- (BOOL)automaticallyChecksForUpdates;
+/*!
+ Explicitly checks for updates and displays a progress dialog while doing so.
-- (void)setUpdateCheckInterval:(NSTimeInterval)interval;
-- (NSTimeInterval)updateCheckInterval;
+ This method is meant for a main menu item.
+ Connect any menu item to this action in Interface Builder,
+ and Sparkle will check for updates and report back its findings verbosely
+ when it is invoked.
-- (void)setFeedURL:(NSURL *)feedURL;
-- (NSURL *)feedURL; // *** MUST BE CALLED ON MAIN THREAD ***
+ This will find updates that the user has opted into skipping.
+ */
+- (IBAction)checkForUpdates:(id)sender;
-- (void)setUserAgentString:(NSString *)userAgent;
-- (NSString *)userAgentString;
+/*!
+ The menu item validation used for the -checkForUpdates: action
+ */
+- (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
-- (void)setSendsSystemProfile:(BOOL)sendsSystemProfile;
-- (BOOL)sendsSystemProfile;
+/*!
+ Checks for updates, but does not display any UI unless an update is found.
-- (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates;
-- (BOOL)automaticallyDownloadsUpdates;
+ This is meant for programmatically initating a check for updates. That is,
+ it will display no UI unless it actually finds an update, in which case it
+ proceeds as usual.
-// This IBAction is meant for a main menu item. Hook up any menu item to this action,
-// and Sparkle will check for updates and report back its findings verbosely.
-- (IBAction)checkForUpdates:(id)sender;
+ If automatic downloading of updates it turned on and allowed, however,
+ this will invoke that behavior, and if an update is found, it will be downloaded
+ in the background silently and will be prepped for installation.
-// This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update,
-// in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an
-// update is found, it will be downloaded and prepped for installation.
+ This will not find updates that the user has opted into skipping.
+ */
- (void)checkForUpdatesInBackground;
-// Date of last update check. Returns nil if no check has been performed.
-- (NSDate*)lastUpdateCheckDate;
+/*!
+ A property indicating whether or not to check for updates automatically.
-// This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though,
-// (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI.
-- (void)checkForUpdateInformation;
+ Setting this property will persist in the host bundle's user defaults.
+ The update schedule cycle will be reset in a short delay after the property's new value is set.
+ This is to allow reverting this property without kicking off a schedule change immediately
+ */
+@property BOOL automaticallyChecksForUpdates;
-// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer.
-- (void)resetUpdateCycle;
+/*!
+ A property indicating whether or not updates can be automatically downloaded in the background.
-- (BOOL)updateInProgress;
+ Note that automatic downloading of updates can be disallowed by the developer
+ or by the user's system if silent updates cannot be done (eg: if they require authentication).
+ In this case, -automaticallyDownloadsUpdates will return NO regardless of how this property is set.
-@end
+ Setting this property will persist in the host bundle's user defaults.
+ */
+@property BOOL automaticallyDownloadsUpdates;
+/*!
+ A property indicating the current automatic update check interval.
-// -----------------------------------------------------------------------------
-// SUUpdater Delegate:
-// -----------------------------------------------------------------------------
+ Setting this property will persist in the host bundle's user defaults.
+ The update schedule cycle will be reset in a short delay after the property's new value is set.
+ This is to allow reverting this property without kicking off a schedule change immediately
+ */
+@property NSTimeInterval updateCheckInterval;
-@interface NSObject (SUUpdaterDelegateInformalProtocol)
+/*!
+ Begins a "probing" check for updates which will not actually offer to
+ update to that version.
-// Use this to keep Sparkle from popping up e.g. while your setup assistant is showing:
-- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)bundle;
+ However, the delegate methods
+ SUUpdaterDelegate::updater:didFindValidUpdate: and
+ SUUpdaterDelegate::updaterDidNotFindUpdate: will be called,
+ so you can use that information in your UI.
-// This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user.
-- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
+ Updates that have been skipped by the user will not be found.
+ */
+- (void)checkForUpdateInformation;
-// Override this to dynamically specify the entire URL.
-- (NSString*)feedURLStringForUpdater:(SUUpdater*)updater;
+/*!
+ The URL of the appcast used to download update information.
-// Use this to override the default behavior for Sparkle prompting the user about automatic update checks.
-- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle;
+ Setting this property will persist in the host bundle's user defaults.
+ If you don't want persistence, you may want to consider instead implementing
+ SUUpdaterDelegate::feedURLStringForUpdater: or SUUpdaterDelegate::feedParametersForUpdater:sendingSystemProfile:
-// Implement this if you want to do some special handling with the appcast once it finishes loading.
-- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;
+ This property must be called on the main thread.
+ */
+@property (copy) NSURL *feedURL;
-// If you're using special logic or extensions in your appcast, implement this to use your own logic for finding
-// a valid update, if any, in the given appcast.
-- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle;
+/*!
+ The host bundle that is being updated.
+ */
+@property (readonly, strong) NSBundle *hostBundle;
-// Sent when a valid update is found by the update driver.
-- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update;
+/*!
+ The bundle this class (SUUpdater) is loaded into.
+ */
+@property (strong, readonly) NSBundle *sparkleBundle;
-// Sent when a valid update is not found.
-- (void)updaterDidNotFindUpdate:(SUUpdater *)update;
+/*!
+ The user agent used when checking for updates.
-// Sent immediately before installing the specified update.
-- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update;
+ The default implementation can be overrided.
+ */
+@property (nonatomic, copy) NSString *userAgentString;
-// Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue.
-// This is not called if the user didn't relaunch on the previous update, in that case it will immediately
-// restart.
-- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation;
+/*!
+ The HTTP headers used when checking for updates.
-// Some apps *can not* be relaunched in certain circumstances. They can use this method
-// to prevent a relaunch "hard":
-- (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater;
+ The keys of this dictionary are HTTP header fields (NSString) and values are corresponding values (NSString)
+ */
+@property (copy) NSDictionary<NSString *, NSString *> *httpHeaders;
-// Called immediately before relaunching.
-- (void)updaterWillRelaunchApplication:(SUUpdater *)updater;
+/*!
+ A property indicating whether or not the user's system profile information is sent when checking for updates.
-// This method allows you to provide a custom version comparator.
-// If you don't implement this method or return nil, the standard version comparator will be used.
-- (id <SUVersionComparison>)versionComparatorForUpdater:(SUUpdater *)updater;
+ Setting this property will persist in the host bundle's user defaults.
+ */
+@property BOOL sendsSystemProfile;
-// This method allows you to provide a custom version comparator.
-// If you don't implement this method or return nil, the standard version displayer will be used.
-- (id <SUVersionDisplay>)versionDisplayerForUpdater:(SUUpdater *)updater;
+/*!
+ A property indicating the decryption password used for extracting updates shipped as Apple Disk Images (dmg)
+ */
+@property (nonatomic, copy) NSString *decryptionPassword;
-// Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle.
-- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater;
+/*!
+ This function ignores normal update schedule, ignores user preferences,
+ and interrupts users with an unwanted immediate app update.
-// Called before and after, respectively, an updater shows a modal alert window, to give the host
-// the opportunity to hide attached windows etc. that may get in the way:
--(void) updaterWillShowModalAlert:(SUUpdater *)updater;
--(void) updaterDidShowModalAlert:(SUUpdater *)updater;
+ WARNING: this function should not be used in regular apps. This function
+ is a user-unfriendly hack only for very special cases, like unstable
+ rapidly-changing beta builds that would not run correctly if they were
+ even one day out of date.
-@end
+ Instead of this function you should set `SUAutomaticallyUpdate` to `YES`,
+ which will gracefully install updates when the app quits.
+ For UI-less/daemon apps that aren't usually quit, instead of this function,
+ you can use the delegate method
+ SUUpdaterDelegate::updater:willInstallUpdateOnQuit:immediateInstallationInvocation:
+ to immediately start installation when an update was found.
-// -----------------------------------------------------------------------------
-// Constants:
-// -----------------------------------------------------------------------------
+ A progress dialog is shown but the user will never be prompted to read the
+ release notes.
-// Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds.
-#if defined(DEBUG) && DEBUG && 0
-#define SU_MIN_CHECK_INTERVAL 60
-#else
-#define SU_MIN_CHECK_INTERVAL 60*60
-#endif
+ This function will cause update to be downloaded twice if automatic updates are
+ enabled.
-#if defined(DEBUG) && DEBUG && 0
-#define SU_DEFAULT_CHECK_INTERVAL 60
-#else
-#define SU_DEFAULT_CHECK_INTERVAL 60*60*24
-#endif
+ You may want to respond to the userDidCancelDownload delegate method in case
+ the user clicks the "Cancel" button while the update is downloading.
+ */
+- (void)installUpdatesIfAvailable;
+
+/*!
+ Returns the date of last update check.
+
+ \returns \c nil if no check has been performed.
+ */
+@property (readonly, copy) NSDate *lastUpdateCheckDate;
+
+/*!
+ Appropriately schedules or cancels the update checking timer according to
+ the preferences for time interval and automatic checks.
+
+ This call does not change the date of the next check,
+ but only the internal NSTimer.
+ */
+- (void)resetUpdateCycle;
+
+/*!
+ A property indicating whether or not an update is in progress.
+
+ Note this property is not indicative of whether or not user initiated updates can be performed.
+ Use SUUpdater::validateMenuItem: for that instead.
+ */
+@property (readonly) BOOL updateInProgress;
+
+@end
#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUUpdaterDelegate.h b/OSX/Sparkle.framework/Versions/A/Headers/SUUpdaterDelegate.h
new file mode 100644
index 0000000..86d1eb9
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SUUpdaterDelegate.h
@@ -0,0 +1,301 @@
+//
+// SUUpdaterDelegate.h
+// Sparkle
+//
+// Created by Mayur Pawashe on 12/25/16.
+// Copyright © 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+
+#import "SUExport.h"
+
+@protocol SUVersionComparison, SUVersionDisplay;
+@class SUUpdater, SUAppcast, SUAppcastItem;
+
+NS_ASSUME_NONNULL_BEGIN
+
+// -----------------------------------------------------------------------------
+// SUUpdater Notifications for events that might be interesting to more than just the delegate
+// The updater will be the notification object
+// -----------------------------------------------------------------------------
+SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification;
+SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification;
+SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification;
+SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification;
+#define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification;
+#define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification;
+
+// Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo
+SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey;
+// Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo
+SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey;
+
+// -----------------------------------------------------------------------------
+// SUUpdater Delegate:
+// -----------------------------------------------------------------------------
+
+/*!
+ Provides methods to control the behavior of an SUUpdater object.
+ */
+@protocol SUUpdaterDelegate <NSObject>
+@optional
+
+/*!
+ Returns whether to allow Sparkle to pop up.
+
+ For example, this may be used to prevent Sparkle from interrupting a setup assistant.
+
+ \param updater The SUUpdater instance.
+ */
+- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)updater;
+
+/*!
+ Returns additional parameters to append to the appcast URL's query string.
+
+ This is potentially based on whether or not Sparkle will also be sending along the system profile.
+
+ \param updater The SUUpdater instance.
+ \param sendingProfile Whether the system profile will also be sent.
+
+ \return An array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user.
+ */
+- (NSArray<NSDictionary<NSString *, NSString *> *> *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
+
+/*!
+ Returns a custom appcast URL.
+
+ Override this to dynamically specify the entire URL.
+
+ An alternative may be to use SUUpdaterDelegate::feedParametersForUpdater:sendingSystemProfile:
+ and let the server handle what kind of feed to provide.
+
+ \param updater The SUUpdater instance.
+ */
+- (nullable NSString *)feedURLStringForUpdater:(SUUpdater *)updater;
+
+/*!
+ Returns whether Sparkle should prompt the user about automatic update checks.
+
+ Use this to override the default behavior.
+
+ \param updater The SUUpdater instance.
+ */
+- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)updater;
+
+/*!
+ Called after Sparkle has downloaded the appcast from the remote server.
+
+ Implement this if you want to do some special handling with the appcast once it finishes loading.
+
+ \param updater The SUUpdater instance.
+ \param appcast The appcast that was downloaded from the remote server.
+ */
+- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;
+
+/*!
+ Returns the item in the appcast corresponding to the update that should be installed.
+
+ If you're using special logic or extensions in your appcast,
+ implement this to use your own logic for finding a valid update, if any,
+ in the given appcast.
+
+ \param appcast The appcast that was downloaded from the remote server.
+ \param updater The SUUpdater instance.
+ */
+- (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)updater;
+
+/*!
+ Called when a valid update is found by the update driver.
+
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be installed.
+ */
+- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item;
+
+/*!
+ Called when a valid update is not found.
+
+ \param updater The SUUpdater instance.
+ */
+- (void)updaterDidNotFindUpdate:(SUUpdater *)updater;
+
+/*!
+ Called immediately before downloading the specified update.
+
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be downloaded.
+ \param request The mutable URL request that will be used to download the update.
+ */
+- (void)updater:(SUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request;
+
+/*!
+ Called immediately after succesfull download of the specified update.
+
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that has been downloaded.
+ */
+- (void)updater:(SUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item;
+
+/*!
+ Called after the specified update failed to download.
+
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that failed to download.
+ \param error The error generated by the failed download.
+ */
+- (void)updater:(SUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error;
+
+/*!
+ Called when the user clicks the cancel button while and update is being downloaded.
+
+ \param updater The SUUpdater instance.
+ */
+- (void)userDidCancelDownload:(SUUpdater *)updater;
+
+/*!
+ Called immediately before extracting the specified downloaded update.
+
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be extracted.
+ */
+- (void)updater:(SUUpdater *)updater willExtractUpdate:(SUAppcastItem *)item;
+
+/*!
+ Called immediately after extracting the specified downloaded update.
+
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that has been extracted.
+ */
+- (void)updater:(SUUpdater *)updater didExtractUpdate:(SUAppcastItem *)item;
+
+/*!
+ Called immediately before installing the specified update.
+
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be installed.
+ */
+- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item;
+
+/*!
+ Returns whether the relaunch should be delayed in order to perform other tasks.
+
+ This is not called if the user didn't relaunch on the previous update,
+ in that case it will immediately restart.
+
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be installed.
+ \param invocation The invocation that must be completed with `[invocation invoke]` before continuing with the relaunch.
+
+ \return \c YES to delay the relaunch until \p invocation is invoked.
+ */
+- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvoking:(NSInvocation *)invocation;
+
+/*!
+ Returns whether the application should be relaunched at all.
+
+ Some apps \b cannot be relaunched under certain circumstances.
+ This method can be used to explicitly prevent a relaunch.
+
+ \param updater The SUUpdater instance.
+ */
+- (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater;
+
+/*!
+ Called immediately before relaunching.
+
+ \param updater The SUUpdater instance.
+ */
+- (void)updaterWillRelaunchApplication:(SUUpdater *)updater;
+
+/*!
+ Called immediately after relaunching. SUUpdater delegate must be set before applicationDidFinishLaunching: to catch this event.
+
+ \param updater The SUUpdater instance.
+ */
+- (void)updaterDidRelaunchApplication:(SUUpdater *)updater;
+
+/*!
+ Returns an object that compares version numbers to determine their arithmetic relation to each other.
+
+ This method allows you to provide a custom version comparator.
+ If you don't implement this method or return \c nil,
+ the standard version comparator will be used.
+
+ \sa SUStandardVersionComparator
+
+ \param updater The SUUpdater instance.
+ */
+- (nullable id<SUVersionComparison>)versionComparatorForUpdater:(SUUpdater *)updater;
+
+/*!
+ Returns an object that formats version numbers for display to the user.
+
+ If you don't implement this method or return \c nil,
+ the standard version formatter will be used.
+
+ \sa SUUpdateAlert
+
+ \param updater The SUUpdater instance.
+ */
+- (nullable id<SUVersionDisplay>)versionDisplayerForUpdater:(SUUpdater *)updater;
+
+/*!
+ Returns the path which is used to relaunch the client after the update is installed.
+
+ The default is the path of the host bundle.
+
+ \param updater The SUUpdater instance.
+ */
+- (nullable NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater;
+
+/*!
+ Called before an updater shows a modal alert window,
+ to give the host the opportunity to hide attached windows that may get in the way.
+
+ \param updater The SUUpdater instance.
+ */
+- (void)updaterWillShowModalAlert:(SUUpdater *)updater;
+
+/*!
+ Called after an updater shows a modal alert window,
+ to give the host the opportunity to hide attached windows that may get in the way.
+
+ \param updater The SUUpdater instance.
+ */
+- (void)updaterDidShowModalAlert:(SUUpdater *)updater;
+
+/*!
+ Called when an update is scheduled to be silently installed on quit.
+ This is after an update has been automatically downloaded in the background.
+ (i.e. SUUpdater::automaticallyDownloadsUpdates is YES)
+
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be installed.
+ \param invocation Can be used to trigger an immediate silent install and relaunch.
+ */
+- (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationInvocation:(NSInvocation *)invocation;
+
+/*!
+ Calls after an update that was scheduled to be silently installed on quit has been canceled.
+
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that was proposed to be installed.
+ */
+- (void)updater:(SUUpdater *)updater didCancelInstallUpdateOnQuit:(SUAppcastItem *)item;
+
+/*!
+ Called after an update is aborted due to an error.
+
+ \param updater The SUUpdater instance.
+ \param error The error that caused the abort
+ */
+- (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h b/OSX/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h
index 6c65ea4..c654fc4 100755..100644
--- a/OSX/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h
@@ -9,21 +9,29 @@
#ifndef SUVERSIONCOMPARISONPROTOCOL_H
#define SUVERSIONCOMPARISONPROTOCOL_H
-#import <Cocoa/Cocoa.h>
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
+
+NS_ASSUME_NONNULL_BEGIN
/*!
- @protocol
- @abstract Implement this protocol to provide version comparison facilities for Sparkle.
+ Provides version comparison facilities for Sparkle.
*/
@protocol SUVersionComparison
/*!
- @method
- @abstract An abstract method to compare two version strings.
- @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent.
+ An abstract method to compare two version strings.
+
+ Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a,
+ and NSOrderedSame if they are equivalent.
*/
-- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD!
+- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD!
@end
+NS_ASSUME_NONNULL_END
#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h b/OSX/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h
index 368b9c9..980efb3 100755..100644
--- a/OSX/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h
+++ b/OSX/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h
@@ -6,22 +6,24 @@
// Copyright 2009 Elgato Systems GmbH. All rights reserved.
//
-#import <Cocoa/Cocoa.h>
-
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
/*!
- @protocol
- @abstract Implement this protocol to apply special formatting to the two
- version numbers.
+ Applies special display formatting to version numbers.
*/
@protocol SUVersionDisplay
/*!
- @method
- @abstract An abstract method to format two version strings.
- @discussion You get both so you can display important distinguishing
- information, but leave out unnecessary/confusing parts.
+ Formats two version strings.
+
+ Both versions are provided so that important distinguishing information
+ can be displayed while also leaving out unnecessary/confusing parts.
*/
--(void) formatVersion: (NSString**)inOutVersionA andVersion: (NSString**)inOutVersionB;
+- (void)formatVersion:(NSString *_Nonnull*_Nonnull)inOutVersionA andVersion:(NSString *_Nonnull*_Nonnull)inOutVersionB;
@end
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/Sparkle.h b/OSX/Sparkle.framework/Versions/A/Headers/Sparkle.h
index 08dd577..5ae2e6a 100755..100644
--- a/OSX/Sparkle.framework/Versions/A/Headers/Sparkle.h
+++ b/OSX/Sparkle.framework/Versions/A/Headers/Sparkle.h
@@ -12,10 +12,22 @@
// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless
// there are name-space collisions) so we can list all of them to start with:
-#import <Sparkle/SUUpdater.h>
+#import "SUAppcast.h"
+#import "SUAppcastItem.h"
+#import "SUStandardVersionComparator.h"
+#import "SUUpdater.h"
+#import "SUUpdaterDelegate.h"
+#import "SUVersionComparisonProtocol.h"
+#import "SUVersionDisplayProtocol.h"
+#import "SUErrors.h"
-#import <Sparkle/SUAppcast.h>
-#import <Sparkle/SUAppcastItem.h>
-#import <Sparkle/SUVersionComparisonProtocol.h>
+#import "SPUDownloader.h"
+#import "SPUDownloaderDelegate.h"
+#import "SPUDownloaderDeprecated.h"
+#import "SPUDownloadData.h"
+#import "SPUDownloaderProtocol.h"
+#import "SPUDownloaderSession.h"
+#import "SPUURLRequest.h"
+#import "SUCodeSigningVerifier.h"
#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Modules/module.modulemap b/OSX/Sparkle.framework/Versions/A/Modules/module.modulemap
new file mode 100644
index 0000000..af3fe6d
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module Sparkle {
+ umbrella header "Sparkle.h"
+
+ export *
+ module * { export * }
+}
diff --git a/OSX/Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h b/OSX/Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h
new file mode 100644
index 0000000..a52bf5a
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h
@@ -0,0 +1,21 @@
+//
+// SUUnarchiver.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/16/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol SUUnarchiverProtocol;
+
+@interface SUUnarchiver : NSObject
+
++ (nullable id <SUUnarchiverProtocol>)unarchiverForPath:(NSString *)path updatingHostBundlePath:(nullable NSString *)hostPath decryptionPassword:(nullable NSString *)decryptionPassword;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist
new file mode 100644
index 0000000..2bda3e9
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>BuildMachineOSBuild</key>
+ <string>18C54</string>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>Autoupdate</string>
+ <key>CFBundleIconFile</key>
+ <string>AppIcon.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.sparkle-project.Sparkle.Autoupdate</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.21.2 12-ga5b23cdbe</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleSupportedPlatforms</key>
+ <array>
+ <string>MacOSX</string>
+ </array>
+ <key>CFBundleVersion</key>
+ <string>1.21.2</string>
+ <key>DTCompiler</key>
+ <string>com.apple.compilers.llvm.clang.1_0</string>
+ <key>DTPlatformBuild</key>
+ <string>10B61</string>
+ <key>DTPlatformVersion</key>
+ <string>GM</string>
+ <key>DTSDKBuild</key>
+ <string>18B71</string>
+ <key>DTSDKName</key>
+ <string>macosx10.14</string>
+ <key>DTXcode</key>
+ <string>1010</string>
+ <key>DTXcodeBuild</key>
+ <string>10B61</string>
+ <key>LSBackgroundOnly</key>
+ <string>1</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>10.7</string>
+ <key>LSUIElement</key>
+ <string>1</string>
+ <key>NSMainNibFile</key>
+ <string>MainMenu</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate
new file mode 100755
index 0000000..ee27325
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop
new file mode 100755
index 0000000..561ff48
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo
new file mode 100644
index 0000000..bd04210
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo
@@ -0,0 +1 @@
+APPL???? \ No newline at end of file
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns
new file mode 100644
index 0000000..7f2a571
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib
new file mode 100644
index 0000000..da18126
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings
new file mode 100644
index 0000000..4cd92c0
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings
new file mode 100644
index 0000000..cc238f6
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings
new file mode 100644
index 0000000..c93688a
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings
new file mode 100644
index 0000000..10e3c5a
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings
new file mode 100644
index 0000000..698dc67
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings
new file mode 100644
index 0000000..deed9ef
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings
new file mode 100644
index 0000000..8c38dc6
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings
new file mode 100644
index 0000000..4f2015f
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings
new file mode 100644
index 0000000..dab921c
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings
new file mode 100644
index 0000000..c7a5571
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings
new file mode 100644
index 0000000..fec4d0d
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hr.lproj/Sparkle.strings
new file mode 100644
index 0000000..2a727d3
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hr.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hu.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hu.lproj/Sparkle.strings
new file mode 100644
index 0000000..9cd6bff
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hu.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings
new file mode 100644
index 0000000..74ae728
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings
new file mode 100644
index 0000000..68b6d36
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings
new file mode 100644
index 0000000..f5e9c6d
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings
new file mode 100644
index 0000000..92c18ee
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings
new file mode 100644
index 0000000..ec2561b
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings
new file mode 100644
index 0000000..58be0e8
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings
new file mode 100644
index 0000000..2b9c461
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings
new file mode 100644
index 0000000..e55c6fd
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings
new file mode 100644
index 0000000..00df86f
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings
new file mode 100644
index 0000000..318baa9
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings
new file mode 100644
index 0000000..c33086d
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings
new file mode 100644
index 0000000..a7d2ebc
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings
new file mode 100644
index 0000000..1be2a80
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings
new file mode 100644
index 0000000..738c900
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings
new file mode 100644
index 0000000..eca2570
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings
new file mode 100644
index 0000000..4def140
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings
new file mode 100644
index 0000000..f7eb257
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings
new file mode 100644
index 0000000..214331c
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings
new file mode 100644
index 0000000..533e208
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/DarkAqua.css b/OSX/Sparkle.framework/Versions/A/Resources/DarkAqua.css
new file mode 100644
index 0000000..a41e0f2
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/DarkAqua.css
@@ -0,0 +1,9 @@
+html {
+ color: #FFFFFFD8;
+}
+:link {
+ color: #419CFF;
+}
+:link:active {
+ color: #FF1919;
+}
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Info.plist b/OSX/Sparkle.framework/Versions/A/Resources/Info.plist
index 1e79abe..0d62b6c 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/Info.plist
+++ b/OSX/Sparkle.framework/Versions/A/Resources/Info.plist
@@ -3,13 +3,13 @@
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
- <string>13A603</string>
+ <string>18C54</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>Sparkle</string>
<key>CFBundleIdentifier</key>
- <string>org.andymatuschak.Sparkle</string>
+ <string>org.sparkle-project.Sparkle</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
@@ -17,24 +17,28 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
- <string>1.5 Beta (git)</string>
+ <string>1.21.2 12-ga5b23cdbe</string>
<key>CFBundleSignature</key>
<string>????</string>
+ <key>CFBundleSupportedPlatforms</key>
+ <array>
+ <string>MacOSX</string>
+ </array>
<key>CFBundleVersion</key>
- <string>1.5</string>
+ <string>1.21.2</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
- <string>5A3005</string>
+ <string>10B61</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
- <string>13A595</string>
+ <string>18B71</string>
<key>DTSDKName</key>
- <string>macosx10.9</string>
+ <string>macosx10.14</string>
<key>DTXcode</key>
- <string>0502</string>
+ <string>1010</string>
<key>DTXcodeBuild</key>
- <string>5A3005</string>
+ <string>10B61</string>
</dict>
</plist>
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist b/OSX/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist
index 63644f0..1f75b24 100755..100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist
+++ b/OSX/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist
@@ -9,27 +9,91 @@
<key>iMac4,1</key>
<string>iMac (Core Duo)</string>
<key>iMac4,2</key>
- <string>iMac for Education (17-inch, Core Duo)</string>
+ <string>iMac for Education (17 inch, Core Duo)</string>
<key>iMac5,1</key>
<string>iMac (Core 2 Duo, 17 or 20 inch, SuperDrive)</string>
<key>iMac5,2</key>
<string>iMac (Core 2 Duo, 17 inch, Combo Drive)</string>
<key>iMac6,1</key>
<string>iMac (Core 2 Duo, 24 inch, SuperDrive)</string>
+ <key>iMac7,1</key>
+ <string>iMac Intel Core 2 Duo (aluminum enclosure)</string>
<key>iMac8,1</key>
- <string>iMac (April 2008)</string>
+ <string>iMac (Core 2 Duo, 20 or 24 inch, Early 2008 )</string>
+ <key>iMac9,1</key>
+ <string>iMac (Core 2 Duo, 20 or 24 inch, Early or Mid 2009 )</string>
+ <key>iMac10,1</key>
+ <string>iMac (Core 2 Duo, 21.5 or 27 inch, Late 2009 )</string>
+ <key>iMac11,1</key>
+ <string>iMac (Core i5 or i7, 27 inch Late 2009)</string>
+ <key>iMac11,2</key>
+ <string>21.5&quot; iMac (mid 2010)</string>
+ <key>iMac11,3</key>
+ <string>iMac (Core i5 or i7, 27 inch Mid 2010)</string>
+ <key>iMac12,1</key>
+ <string>iMac (Core i3 or i5 or i7, 21.5 inch Mid 2010 or Late 2011)</string>
+ <key>iMac12,2</key>
+ <string>iMac (Core i5 or i7, 27 inch Mid 2011)</string>
+ <key>iMac13,1</key>
+ <string>iMac (Core i3 or i5 or i7, 21.5 inch Late 2012 or Early 2013)</string>
+ <key>iMac13,2</key>
+ <string>iMac (Core i5 or i7, 27 inch Late 2012)</string>
+ <key>iMac14,1</key>
+ <string>iMac (Core i5, 21.5 inch Late 2013)</string>
+ <key>iMac14,2</key>
+ <string>iMac (Core i5 or i7, 27 inch Late 2013)</string>
+ <key>iMac14,3</key>
+ <string>iMac (Core i5 or i7, 21.5 inch Late 2013)</string>
+ <key>iMac14,4</key>
+ <string>iMac (Core i5, 21.5 inch Mid 2014)</string>
+ <key>iMac15,1</key>
+ <string>iMac (Retina 5K Core i5 or i7, 27 inch Late 2014 or Mid 2015)</string>
+ <key>iMac16,1</key>
+ <string>iMac (Core i5, 21,5 inch Late 2015)</string>
+ <key>iMac16,2</key>
+ <string>iMac (Retina 4K Core i5 or i7, 21.5 inch Late 2015)</string>
+ <key>iMac17,1</key>
+ <string>iMac (Retina 5K Core i5 or i7, 27 inch Late 2015)</string>
<key>MacBook1,1</key>
<string>MacBook (Core Duo)</string>
<key>MacBook2,1</key>
<string>MacBook (Core 2 Duo)</string>
<key>MacBook4,1</key>
<string>MacBook (Core 2 Duo Feb 2008)</string>
+ <key>MacBook5,1</key>
+ <string>MacBook (Core 2 Duo, Late 2008, Unibody)</string>
+ <key>MacBook5,2</key>
+ <string>MacBook (Core 2 Duo, Early 2009, White)</string>
+ <key>MacBook6,1</key>
+ <string>MacBook (Core 2 Duo, Late 2009, Unibody)</string>
+ <key>MacBook7,1</key>
+ <string>MacBook (Core 2 Duo, Mid 2010, White)</string>
+ <key>MacBook8,1</key>
+ <string>MacBook (Core M, 12 inch, Early 2015)</string>
<key>MacBookAir1,1</key>
- <string>MacBook Air (January 2008)</string>
+ <string>MacBook Air (Core 2 Duo, 13 inch, Early 2008)</string>
<key>MacBookAir2,1</key>
- <string>MacBook Air (June 2009)</string>
+ <string>MacBook Air (Core 2 Duo, 13 inch, Mid 2009)</string>
<key>MacBookAir3,1</key>
- <string>MacBook Air (October 2010)</string>
+ <string>MacBook Air (Core 2 Duo, 11 inch, Late 2010)</string>
+ <key>MacBookAir3,2</key>
+ <string>MacBook Air (Core 2 Duo, 13 inch, Late 2010)</string>
+ <key>MacBookAir4,1</key>
+ <string>MacBook Air (Core i5 or i7, 11 inch, Mid 2011)</string>
+ <key>MacBookAir4,2</key>
+ <string>MacBook Air (Core i5 or i7, 13 inch, Mid 2011)</string>
+ <key>MacBookAir5,1</key>
+ <string>MacBook Air (Core i5 or i7, 11 inch, Mid 2012)</string>
+ <key>MacBookAir5,2</key>
+ <string>MacBook Air (Core i5 or i7, 13 inch, Mid 2012)</string>
+ <key>MacBookAir6,1</key>
+ <string>MacBook Air (Core i5 or i7, 11 inch, Mid 2013 or Early 2014)</string>
+ <key>MacBookAir6,2</key>
+ <string>MacBook Air (Core i5 or i7, 13 inch, Mid 2013 or Early 2014)</string>
+ <key>MacBookAir7,1</key>
+ <string>MacBook Air (Core i5 or i7, 11 inch, Early 2015)</string>
+ <key>MacBookAir7,2</key>
+ <string>MacBook Air (Core i5 or i7, 13 inch, Early 2015)</string>
<key>MacBookPro1,1</key>
<string>MacBook Pro Core Duo (15-inch)</string>
<key>MacBookPro1,2</key>
@@ -44,8 +108,70 @@
<string>MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo)</string>
<key>MacBookPro4,1</key>
<string>MacBook Pro (Core 2 Duo Feb 2008)</string>
+ <key>MacBookPro5,1</key>
+ <string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
+ <key>MacBookPro5,2</key>
+ <string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
+ <key>MacBookPro5,3</key>
+ <string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
+ <key>MacBookPro5,4</key>
+ <string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
+ <key>MacBookPro5,5</key>
+ <string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
+ <key>MacBookPro6,1</key>
+ <string>MacBook Pro Intel Core i5, Intel Core i7 (mid 2010)</string>
+ <key>MacBookPro6,2</key>
+ <string>MacBook Pro Intel Core i5, Intel Core i7 (mid 2010)</string>
+ <key>MacBookPro7,1</key>
+ <string>MacBook Pro Intel Core 2 Duo (mid 2010)</string>
+ <key>MacBookPro8,1</key>
+ <string>MacBook Pro Intel Core i5, Intel Core i7, 13&quot; (early 2011)</string>
+ <key>MacBookPro8,2</key>
+ <string>MacBook Pro Intel Core i7, 15&quot; (early 2011)</string>
+ <key>MacBookPro8,3</key>
+ <string>MacBook Pro Intel Core i7, 17&quot; (early 2011)</string>
+ <key>MacBookPro9,1</key>
+ <string>MacBook Pro (15-inch, Mid 2012)</string>
+ <key>MacBookPro9,2</key>
+ <string>MacBook Pro (13-inch, Mid 2012)</string>
+ <key>MacBookPro10,1</key>
+ <string>MacBook Pro (Retina, Mid 2012)</string>
+ <key>MacBookPro10,2</key>
+ <string>MacBook Pro (Retina, 13-inch, Late 2012)</string>
+ <key>MacBookPro11,1</key>
+ <string>MacBook Pro (Retina, 13-inch, Late 2013)</string>
+ <key>MacBookPro11,2</key>
+ <string>MacBook Pro (Retina, 15-inch, Late 2013)</string>
+ <key>MacBookPro11,3</key>
+ <string>MacBook Pro (Retina, 15-inch, Late 2013)</string>
+ <key>MacbookPro11,4</key>
+ <string>MacBook Pro (Retina, 15-inch, Mid 2015)</string>
+ <key>MacbookPro11,5</key>
+ <string>MacBook Pro (Retina, 15-inch, Mid 2015)</string>
+ <key>MacbookPro12,1 </key>
+ <string>MacBook Pro (Retina, 13-inch, Early 2015)</string>
<key>Macmini1,1</key>
<string>Mac Mini (Core Solo/Duo)</string>
+ <key>Macmini2,1</key>
+ <string>Mac mini Intel Core</string>
+ <key>Macmini3,1</key>
+ <string>Mac mini Intel Core</string>
+ <key>Macmini4,1</key>
+ <string>Mac mini Intel Core (Mid 2010)</string>
+ <key>Macmini5,1</key>
+ <string>Mac mini (Core i5, Mid 2011)</string>
+ <key>Macmini5,2</key>
+ <string>Mac mini (Core i5 or Core i7, Mid 2011)</string>
+ <key>Macmini5,3</key>
+ <string>Mac mini (Core i7, Server, Mid 2011)</string>
+ <key>Macmini6,1</key>
+ <string>Mac mini (Core i5, Late 2012)</string>
+ <key>Macmini6,2</key>
+ <string>Mac mini (Core i7, Normal or Server, Late 2012)</string>
+ <key>Macmini7,1</key>
+ <string>Mac mini (Core i5 or Core i7, Late 2014)</string>
+ <key>MacPro1,1,Quad</key>
+ <string>Mac Pro</string>
<key>MacPro1,1</key>
<string>Mac Pro (four-core)</string>
<key>MacPro2,1</key>
@@ -55,7 +181,9 @@
<key>MacPro4,1</key>
<string>Mac Pro (March 2009)</string>
<key>MacPro5,1</key>
- <string>Mac Pro (August 2010)</string>
+ <string>Mac Pro (2010 or 2012)</string>
+ <key>MacPro6,1</key>
+ <string>Mac Pro (Late 2013)</string>
<key>PowerBook1,1</key>
<string>PowerBook G3</string>
<key>PowerBook2,1</key>
@@ -118,14 +246,6 @@
<string>Power Macintosh G3 (Blue &amp; White)</string>
<key>PowerMac1,2</key>
<string>Power Macintosh G4 (PCI Graphics)</string>
- <key>PowerMac10,1</key>
- <string>Mac Mini G4</string>
- <key>PowerMac10,2</key>
- <string>Mac Mini (Late 2005)</string>
- <key>PowerMac11,2</key>
- <string>Power Macintosh G5 (Late 2005)</string>
- <key>PowerMac12,1</key>
- <string>iMac G5 (iSight)</string>
<key>PowerMac2,1</key>
<string>iMac G3 (Slot-loading CD-ROM)</string>
<key>PowerMac2,2</key>
@@ -152,6 +272,8 @@
<string>iMac G4 (17-inch Flat Panel)</string>
<key>PowerMac5,1</key>
<string>Power Macintosh G4 Cube</string>
+ <key>PowerMac5,2</key>
+ <string>Power Mac G4 Cube</string>
<key>PowerMac6,1</key>
<string>iMac G4 (USB 2.0)</string>
<key>PowerMac6,3</key>
@@ -168,6 +290,14 @@
<string>iMac G5 (Ambient Light Sensor)</string>
<key>PowerMac9,1</key>
<string>Power Macintosh G5 (Late 2005)</string>
+ <key>PowerMac10,1</key>
+ <string>Mac Mini G4</string>
+ <key>PowerMac10,2</key>
+ <string>Mac Mini (Late 2005)</string>
+ <key>PowerMac11,2</key>
+ <string>Power Macintosh G5 (Late 2005)</string>
+ <key>PowerMac12,1</key>
+ <string>iMac G5 (iSight)</string>
<key>RackMac1,1</key>
<string>Xserve G4</string>
<key>RackMac1,2</key>
@@ -178,5 +308,7 @@
<string>Xserve (Intel Xeon)</string>
<key>Xserve2,1</key>
<string>Xserve (January 2008 quad-core)</string>
+ <key>Xserve3,1</key>
+ <string>Xserve (early 2009)</string>
</dict>
</plist>
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/SUStatus.nib b/OSX/Sparkle.framework/Versions/A/Resources/SUStatus.nib
index 356987e..da18126 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/SUStatus.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/SUStatus.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib
index 2d1b77b..29127f1 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib
index b8925e7..c619e69 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib
index 006d6aa..5773517 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings
index 858a71f..4cd92c0 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings
new file mode 100644
index 0000000..cc238f6
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib
index 335264f..b3d57f6 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib
index fe70bf2..30a49ec 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib
index 9dcd944..f4c8532 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings
index 9bbb996..c93688a 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib
index 211e718..ef46cca 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib
index 42395b2..778a468 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib
index 58af832..e435904 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings
index bcf691d..10e3c5a 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib
index 19970aa..7540fa1 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib
index 69fccfc..fed8b25 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib
index c59bf3c..6ecec45 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings
index 664946d..698dc67 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib
new file mode 100644
index 0000000..6e803a7
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib
new file mode 100644
index 0000000..8ca181c
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib
new file mode 100644
index 0000000..353156a
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings
new file mode 100644
index 0000000..deed9ef
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib
index 512c1c5..15f157f 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib
index e856f9d..29d60da 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib
index 4f0c0a3..72f172e 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings
index f9c15d8..8c38dc6 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib
index 8d657a7..9b3f723 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib
index d28a4f8..265bacc 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib
index f927ba6..009394d 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings
index 8e4ab94..4f2015f 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib
new file mode 100644
index 0000000..a882db0
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib
new file mode 100644
index 0000000..c7a3311
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib
new file mode 100644
index 0000000..60cd954
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings
new file mode 100644
index 0000000..dab921c
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib
index 59b199b..5112924 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib
index a084b19..e24e3fd 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib
index 808db82..88598eb 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings
index 236f807..c7a5571 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings
new file mode 100644
index 0000000..fec4d0d
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib
new file mode 100644
index 0000000..75761ac
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib
new file mode 100644
index 0000000..867b7c0
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib
new file mode 100644
index 0000000..f1090d7
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/Sparkle.strings
new file mode 100644
index 0000000..2a727d3
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib
new file mode 100644
index 0000000..4d7e8a9
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib
new file mode 100644
index 0000000..40571fd
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib
new file mode 100644
index 0000000..ff2e24f
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/Sparkle.strings
new file mode 100644
index 0000000..9cd6bff
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib
index 89825fb..e27ca6d 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib
index 2172c0d..3e2d8ef 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib
index 9a4cca0..0dceed4 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings
index 665e273..74ae728 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib
index c3d7a42..c0522dc 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib
index 7cc884b..5013418 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib
index 285596b..cc82821 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings
index 4ccd7af..68b6d36 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib
index 61d2a29..27f5abf 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib
index ee41cad..86798fe 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib
index ebd5759..57fcc83 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings
index b21ea04..f5e9c6d 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib
index e7a8d46..977dc0a 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib
index 89f887e..d52bd5d 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib
index 5da11e0..7880aef 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings
new file mode 100644
index 0000000..92c18ee
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib
new file mode 100644
index 0000000..fd5b851
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib
new file mode 100644
index 0000000..6b05c1f
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib
new file mode 100644
index 0000000..b1474d1
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings
new file mode 100644
index 0000000..ec2561b
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib
index 35a8de2..19e19ff 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib
index eec88ff..13a6ea6 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib
index ab2c86f..690b23a 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings
index 023c473..58be0e8 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib
index 0646f3f..3de644f 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib
index 1b4d495..b05aea7 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib
index 8ea95e8..fc42fa2 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings
index 9a0bc8b..2b9c461 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib
index e8a824a..c43d996 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib
index 03500fa..bf5e54d 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib
index dc92de6..0773eee 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings
index 7a11a9e..e55c6fd 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib
index c3603d5..f787d8c 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib
index 2d371c4..a0ea252 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib
index 7b6d719..8df1dbb 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings
index 497cd83..00df86f 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib
index d669654..b4068e8 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib
index 6a75e5e..998781b 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib
index 2e5802c..011aaf5 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings
index e90bdf5..318baa9 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib
index 8022f52..09fb088 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib
index 9466dc3..423b2ce 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib
index 3b26a5b..19e13ec 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings
index 7afef95..c33086d 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib
index 3afea8d..cf9cb70 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib
index 15e760d..0413025 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib
index e7d67a2..ea04cc1 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings
new file mode 100644
index 0000000..a7d2ebc
--- /dev/null
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib
index 60cfe74..ac4ded9 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib
index c3bd698..fc1c757 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib
index 1ff5bc3..913fb3b 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings
index 7ec0bc2..1be2a80 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib
index 8df1ba0..5c5774c 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib
index 9ab3288..bff9b7f 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib
index 0337c2a..00410e3 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings
index 16c3fb8..738c900 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib
index e1377a4..9126de5 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib
index 239b8f7..867b481 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib
index 143ff91..25e48c8 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings
index 0468c97..eca2570 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib
index 263e74a..6526d27 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib
index ca40c57..4e7b748 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib
index 22a8f46..21bed5f 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings
index cabc211..4def140 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib
index 83dbcbf..5d2dda5 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib
index 939e0cb..94c9dc7 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib
index 8e2bf73..ac62cbf 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings
index 6f0e4db..f7eb257 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib
index 65cc3d2..789fbdb 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib
index a453dfc..9ea3f4d 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib
index 9f85d65..aec87f2 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings
index b741758..214331c 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib
index c4b9e9b..c5f6ea8 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib
index 6e98d7e..1b4b140 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib
index 935b007..1a642e8 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib
+++ b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings
index c1f7e85..533e208 100644
--- a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings
+++ b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings
Binary files differ
diff --git a/OSX/Sparkle.framework/Versions/A/Sparkle b/OSX/Sparkle.framework/Versions/A/Sparkle
index 64eefd0..dcba851 100755
--- a/OSX/Sparkle.framework/Versions/A/Sparkle
+++ b/OSX/Sparkle.framework/Versions/A/Sparkle
Binary files differ
diff --git a/OSX/Updater.h b/OSX/Updater.h
index 53abbe4..3b56830 100644
--- a/OSX/Updater.h
+++ b/OSX/Updater.h
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2013 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2013-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -9,14 +9,17 @@
* implied warranty.
*/
-#ifndef USE_IPHONE
-#import <Cocoa/Cocoa.h>
-@interface XScreenSaverUpdater : NSObject <NSApplicationDelegate>
+#ifdef IN_UPDATER
+# import <Cocoa/Cocoa.h>
+# import <Sparkle/SUUpdaterDelegate.h>
+
+@interface XScreenSaverUpdater : NSObject <NSApplicationDelegate,
+ SUUpdaterDelegate>
{
NSTimer *timer;
}
@end
-#endif // !USE_IPHONE
+#endif // IN_UPDATER
#define UPDATER_DOMAIN "org.jwz.xscreensaver.updater"
diff --git a/OSX/Updater.m b/OSX/Updater.m
index 1bf29fa..6e0d3c9 100644
--- a/OSX/Updater.m
+++ b/OSX/Updater.m
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2013 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2013-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -17,6 +17,7 @@
* version 4-Dec-2013 or later.
*/
+#define IN_UPDATER
#import "Updater.h"
#import "Sparkle/SUUpdater.h"
diff --git a/OSX/Updater.plist b/OSX/Updater.plist
index fd3b176..05befe8 100644
--- a/OSX/Updater.plist
+++ b/OSX/Updater.plist
@@ -9,7 +9,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleGetInfoString</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>CFBundleIconFile</key>
<string>SaverRunner</string>
<key>CFBundleIdentifier</key>
@@ -17,23 +17,23 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>LSUIElement</key>
<true/>
<key>NSHumanReadableCopyright</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>NSMainNibFile</key>
<string>Updater</string>
<key>NSPrincipalClass</key>
diff --git a/OSX/XScreenSaver.plist b/OSX/XScreenSaver.plist
index 3417295..4d106ad 100644
--- a/OSX/XScreenSaver.plist
+++ b/OSX/XScreenSaver.plist
@@ -15,11 +15,11 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>LSMinimumSystemVersion</key>
<string>10.8</string>
<key>NSMainNibFile</key>
diff --git a/OSX/XScreenSaverConfigSheet.h b/OSX/XScreenSaverConfigSheet.h
index b2fd489..8e40dde 100644
--- a/OSX/XScreenSaverConfigSheet.h
+++ b/OSX/XScreenSaverConfigSheet.h
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2006-2013 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -48,7 +48,7 @@
# endif
>
# else
- NSWindow <NSXMLParserDelegate>
+ NSPanel <NSXMLParserDelegate>
# endif
{
NSString *saver_name;
diff --git a/OSX/XScreenSaverView.m b/OSX/XScreenSaverView.m
index cb7d45b..371cf17 100644
--- a/OSX/XScreenSaverView.m
+++ b/OSX/XScreenSaverView.m
@@ -2059,10 +2059,10 @@ gl_check_ver (const struct gl_version *caps,
if (!initted_p || ![self isAnimating]) // no event handling unless running.
return NO;
- [self lockFocus];
+// [self lockFocus]; // As of 10.14 this causes flicker on mouse motion
[self prepareContext];
BOOL result = xsft->event_cb (xdpy, xwindow, xdata, e);
- [self unlockFocus];
+// [self unlockFocus];cp -Rf ${CONFIGURATION_BUILD_DIR}/BuildOutputPrefPane.prefPane ~/Library/PreferencePanes
return result;
}
diff --git a/OSX/bindist.rtf b/OSX/bindist.rtf
index 9d82431..251bb11 100644
--- a/OSX/bindist.rtf
+++ b/OSX/bindist.rtf
@@ -16,8 +16,8 @@
\b0 by Jamie Zawinski\
and many others\
\
-version 5.40\
-12-Aug-2018\
+version 5.42\
+28-Dec-2018\
\
{\field{\*\fldinst{HYPERLINK "https://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 https://www.jwz.org/xscreensaver/}}\
\pard\pardeftab720
diff --git a/OSX/bindist2.webloc b/OSX/bindist2.webloc
index 0ebfa91..4b87f8c 100644
--- a/OSX/bindist2.webloc
+++ b/OSX/bindist2.webloc
@@ -3,6 +3,6 @@
<plist version="1.0">
<dict>
<key>URL</key>
- <string>https://www.jwz.org/xscreensaver/download.html</string>
+ <string>https://play.google.com/store/apps/details?id=org.jwz.android.xscreensaver</string>
</dict>
</plist>
diff --git a/OSX/fuzztest.sh b/OSX/fuzztest.sh
index 20d596a..870d12c 100755
--- a/OSX/fuzztest.sh
+++ b/OSX/fuzztest.sh
@@ -33,6 +33,8 @@ function menu() {
end tell
end tell
end tell"
+
+ open -a XEmacs # switch focus back to somewhere sane
}
menu 'Shake Gesture'
diff --git a/OSX/iSaverRunner.plist b/OSX/iSaverRunner.plist
index 4604e9d..92ca6f0 100644
--- a/OSX/iSaverRunner.plist
+++ b/OSX/iSaverRunner.plist
@@ -9,7 +9,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleGetInfoString</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIcons~ipad</key>
@@ -19,21 +19,21 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSHumanReadableCopyright</key>
- <string>5.40</string>
+ <string>5.42</string>
<key>NSMainNibFile</key>
<string>iSaverRunner</string>
<key>UIAppFonts</key>
diff --git a/OSX/ios-function-table.m b/OSX/ios-function-table.m
index fcb2808..c2e5b88 100644
--- a/OSX/ios-function-table.m
+++ b/OSX/ios-function-table.m
@@ -1,5 +1,5 @@
/* Generated file, do not edit.
- Created: Sat Aug 4 21:35:23 2018 by build-fntable.pl 1.6.
+ Created: Tue Oct 23 19:02:07 2018 by build-fntable.pl 1.6.
*/
#import <Foundation/Foundation.h>
@@ -107,6 +107,7 @@ extern struct xscreensaver_function_table
greynetic_xscreensaver_function_table,
halftone_xscreensaver_function_table,
halo_xscreensaver_function_table,
+ handsy_xscreensaver_function_table,
helix_xscreensaver_function_table,
hexadrop_xscreensaver_function_table,
hexstrut_xscreensaver_function_table,
@@ -346,6 +347,7 @@ NSDictionary *make_function_table_dict(void)
[NSValue valueWithPointer:&greynetic_xscreensaver_function_table], @"greynetic",
[NSValue valueWithPointer:&halftone_xscreensaver_function_table], @"halftone",
[NSValue valueWithPointer:&halo_xscreensaver_function_table], @"halo",
+ [NSValue valueWithPointer:&handsy_xscreensaver_function_table], @"handsy",
[NSValue valueWithPointer:&helix_xscreensaver_function_table], @"helix",
[NSValue valueWithPointer:&hexadrop_xscreensaver_function_table], @"hexadrop",
[NSValue valueWithPointer:&hexstrut_xscreensaver_function_table], @"hexstrut",
diff --git a/OSX/seticon.pl b/OSX/seticon.pl
index fb5dc71..a4f8c2c 100755
--- a/OSX/seticon.pl
+++ b/OSX/seticon.pl
@@ -18,7 +18,7 @@ use strict;
use File::Temp;
my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.6 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.7 $' =~ m/\s(\d[.\d]+)\s/s);
my $verbose = 0;
@@ -52,6 +52,11 @@ sub set_icon ($$) {
close $rez_fh;
my @cmd = ('Rez',
+
+ '-isysroot',
+ '/Applications/Xcode.app/Contents/Developer/Platforms' .
+ '/MacOSX.platform/Developer/SDKs/MacOSX.sdk',
+
'CoreServices.r',
$rez_filename,
'-o', $target_res);
diff --git a/OSX/sparkle-bin/BinaryDelta b/OSX/sparkle-bin/BinaryDelta
new file mode 100755
index 0000000..de7acd7
--- /dev/null
+++ b/OSX/sparkle-bin/BinaryDelta
Binary files differ
diff --git a/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Info.plist b/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Info.plist
new file mode 100644
index 0000000..325809b
--- /dev/null
+++ b/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+ <dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.apple.xcode.dsym.BinaryDelta</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>dSYM</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ </dict>
+</plist>
diff --git a/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDelta b/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDelta
new file mode 100644
index 0000000..302129c
--- /dev/null
+++ b/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDelta
Binary files differ
diff --git a/OSX/sparkle-bin/generate_appcast b/OSX/sparkle-bin/generate_appcast
new file mode 100755
index 0000000..cffaded
--- /dev/null
+++ b/OSX/sparkle-bin/generate_appcast
Binary files differ
diff --git a/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Info.plist b/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Info.plist
new file mode 100644
index 0000000..85e4783
--- /dev/null
+++ b/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+ <dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.apple.xcode.dsym.generate_appcast</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>dSYM</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ </dict>
+</plist>
diff --git a/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcast b/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcast
new file mode 100644
index 0000000..da66605
--- /dev/null
+++ b/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcast
Binary files differ
diff --git a/OSX/sparkle-bin/generate_keys b/OSX/sparkle-bin/generate_keys
new file mode 100755
index 0000000..9b4bf11
--- /dev/null
+++ b/OSX/sparkle-bin/generate_keys
Binary files differ
diff --git a/OSX/sparkle-bin/generate_keys.dSYM/Contents/Info.plist b/OSX/sparkle-bin/generate_keys.dSYM/Contents/Info.plist
new file mode 100644
index 0000000..3caf890
--- /dev/null
+++ b/OSX/sparkle-bin/generate_keys.dSYM/Contents/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+ <dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.apple.xcode.dsym.generate_keys</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>dSYM</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ </dict>
+</plist>
diff --git a/OSX/sparkle-bin/generate_keys.dSYM/Contents/Resources/DWARF/generate_keys b/OSX/sparkle-bin/generate_keys.dSYM/Contents/Resources/DWARF/generate_keys
new file mode 100644
index 0000000..ff7be52
--- /dev/null
+++ b/OSX/sparkle-bin/generate_keys.dSYM/Contents/Resources/DWARF/generate_keys
Binary files differ
diff --git a/OSX/sparkle-bin/old_dsa_scripts/generate_dsa_keys_macos_10.12_only b/OSX/sparkle-bin/old_dsa_scripts/generate_dsa_keys_macos_10.12_only
new file mode 100755
index 0000000..56f195f
--- /dev/null
+++ b/OSX/sparkle-bin/old_dsa_scripts/generate_dsa_keys_macos_10.12_only
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -e
+for file in "dsaparam.pem" "dsa_priv.pem" "dsa_pub.pem"; do
+ if [ -e "$file" ]; then
+ echo "There's already a $file here! Move it aside or be more careful!"
+ exit 1
+ fi
+done
+
+openssl="/usr/bin/openssl"
+$openssl gendsa <($openssl dsaparam 2047) -out dsa_priv.pem
+chmod 0400 dsa_priv.pem
+$openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem
+
+echo "
+Generated two files:
+dsa_priv.pem: your private key. Keep it secret and don't share it!
+dsa_pub.pem: public counterpart to include in the app bundle.
+
+BACK UP YOUR PRIVATE KEY AND KEEP IT SAFE!
+If you lose it, your users will be unable to upgrade!
+"
+
+open -R dsa_priv.pem
diff --git a/OSX/sparkle-bin/old_dsa_scripts/sign_update b/OSX/sparkle-bin/old_dsa_scripts/sign_update
new file mode 100755
index 0000000..fddaae8
--- /dev/null
+++ b/OSX/sparkle-bin/old_dsa_scripts/sign_update
@@ -0,0 +1,18 @@
+#!/bin/bash
+set -e
+set -o pipefail
+if [ "$#" -ne 2 ]; then
+ echo "Usage: $0 update_archive_file dsa_priv.pem"
+ echo "This is an old DSA signing script for deprecated DSA keys."
+ echo "Do not use this for new applications."
+ exit 1
+fi
+openssl=/usr/bin/openssl
+version=`$openssl version`
+if [[ $version =~ "OpenSSL 0.9" ]]; then
+ # pre-10.13 system: Fall back to OpenSSL DSS1 digest because it does not like the -sha1 option
+ $openssl dgst -sha1 -binary < "$1" | $openssl dgst -dss1 -sign "$2" | $openssl enc -base64
+else
+ # 10.13 and later: Use LibreSSL SHA1 digest
+ $openssl dgst -sha1 -binary < "$1" | $openssl dgst -sha1 -sign "$2" | $openssl enc -base64
+fi
diff --git a/OSX/sparkle-bin/sign_update b/OSX/sparkle-bin/sign_update
new file mode 100755
index 0000000..b97e4bd
--- /dev/null
+++ b/OSX/sparkle-bin/sign_update
Binary files differ
diff --git a/OSX/sparkle-bin/sign_update.dSYM/Contents/Info.plist b/OSX/sparkle-bin/sign_update.dSYM/Contents/Info.plist
new file mode 100644
index 0000000..0739389
--- /dev/null
+++ b/OSX/sparkle-bin/sign_update.dSYM/Contents/Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+ <dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.apple.xcode.dsym.sign_update</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>dSYM</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ </dict>
+</plist>
diff --git a/OSX/sparkle-bin/sign_update.dSYM/Contents/Resources/DWARF/sign_update b/OSX/sparkle-bin/sign_update.dSYM/Contents/Resources/DWARF/sign_update
new file mode 100644
index 0000000..67f19b4
--- /dev/null
+++ b/OSX/sparkle-bin/sign_update.dSYM/Contents/Resources/DWARF/sign_update
Binary files differ
diff --git a/OSX/updates.pl b/OSX/updates.pl
index 5938a4a..9249154 100755
--- a/OSX/updates.pl
+++ b/OSX/updates.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# Copyright © 2013 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2013-2018 Jamie Zawinski <jwz@jwz.org>
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
@@ -21,14 +21,15 @@ use open ":encoding(utf8)";
use POSIX;
my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.2 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.5 $' =~ m/\s(\d[.\d]+)\s/s);
my $verbose = 0;
my $debug_p = 0;
my $base_url = "https://www.jwz.org/";
-my $priv_key_file = "$ENV{HOME}/.ssh/sparkle_dsa_priv.pem";
-my $sign_update = "./sign_update.rb";
+my $dsa_priv_key_file = "$ENV{HOME}/.ssh/sparkle_dsa_priv.pem";
+my $dsa_sign_update = "sparkle-bin/old_dsa_scripts/sign_update";
+my $edddsa_sign_update = "sparkle-bin/sign_update";
sub generate_xml($$$$) {
@@ -37,21 +38,26 @@ sub generate_xml($$$$) {
my $outfile = "updates.xml";
my $obody = '';
- my %sigs;
+ my %sig1s;
+ my %sig2s;
my %dates;
if (open (my $in, '<', $outfile)) {
print STDERR "$progname: reading $outfile\n" if $verbose;
local $/ = undef; # read entire file
$obody = <$in>;
close $in;
- foreach my $item (split (/<item/i, $obody)) {
+ my @i = split (/<item/i, $obody);
+ shift @i;
+ foreach my $item (@i) {
my ($v) = ($item =~ m/version="(.*?)"/si);
- my ($sig) = ($item =~ m/dsaSignature="(.*?)"/si);
+ my ($sig1) = ($item =~ m/dsaSignature="(.*?)"/si);
+ my ($sig2) = ($item =~ m/edSignature="(.*?)"/si);
my ($date) = ($item =~ m/<pubDate>(.*?)</si);
next unless $v;
- $sigs{$v} = $sig if $sig;
+ $sig1s{$v} = $sig1 if $sig1;
+ $sig2s{$v} = $sig2 if $sig2;
$dates{$v} = $date if $date;
- print STDERR "$progname: $v: " . ($date || '?') . "\n"
+ print STDERR "$progname: existing: $v: " . ($date || '?') . "\n"
if ($verbose > 1);
}
}
@@ -82,7 +88,8 @@ sub generate_xml($$$$) {
my $v2 = $v1; $v2 =~ s/\.//gs;
my $zip = undef;
DONE:
- foreach my $ext ('zip', 'dmg', 'tar.gz', 'tar.Z') {
+ #foreach my $ext ('zip', 'dmg', 'tar.gz', 'tar.Z') {
+ foreach my $ext ('dmg') {
foreach my $v ($v1, $v2) {
foreach my $name ($app_name, "x" . lc($app_name)) {
my $f = "$name-$v.$ext";
@@ -97,36 +104,51 @@ sub generate_xml($$$$) {
my $publishedp = ($zip && -f "$www_dir/$zip");
$publishedp = 1 if ($count == 0);
- my $url = ("${base_url}$app_name/" . ($publishedp ? $zip : ""));
+ my $url = ("${base_url}$app_name/" . ($publishedp && $zip ? $zip : ""));
$url =~ s@DaliClock/@xdaliclock/@gs if $url; # Kludge
my @st = stat("$archive_dir/$zip") if $zip;
my $size = $st[7];
my $date = $st[9];
- $date = ($zip ?
+ $date = ($date ?
strftime ("%a, %d %b %Y %T %z", localtime($date))
: "");
my $odate = $dates{$v1};
- my $sig = $sigs{$v1};
+ my $sig1 = $sig1s{$v1};
+ my $sig2 = $sig2s{$v1};
# Re-generate the sig if the file date changed.
- $sig = undef if ($odate && $odate ne $date);
+ $sig1 = undef if ($odate && $odate ne $date);
+ $sig2 = undef if ($odate && $odate ne $date);
- print STDERR "$progname: $v1: $date " . ($sig ? "Y" : "N") . "\n"
+ print STDERR "$progname: $v1: $date " .
+ ($sig1 ? "Y" : "N") . ($sig2 ? "Y" : "N") . "\n"
if ($verbose > 1);
- if (!$sig && $zip) {
+ if (!$sig1 && $zip) { # Old-style sigs
local %ENV = %ENV;
$ENV{PATH} = "/usr/bin:$ENV{PATH}";
- $sig = `$sign_update "$archive_dir/$zip" "$priv_key_file"`;
- $sig =~ s/\s+//gs;
+ $sig1 = `$dsa_sign_update "$archive_dir/$zip" "$dsa_priv_key_file"`;
+ $sig1 =~ s/\s+//gs;
}
+ if (!$sig2 && $zip) { # New-style sigs
+ local %ENV = %ENV;
+ $ENV{PATH} = "/usr/bin:$ENV{PATH}";
+ my $xml = `$edddsa_sign_update "$archive_dir/$zip"`;
+ ($sig2) = ($xml =~ m/sparkle:edSignature=\"([^\"<>\s]+)\"/si);
+ error ("unparsable: $edddsa_sign_update: $xml") unless $sig2;
+ }
+
+ $sig1 = 'ERROR' unless defined($sig1);
+ $sig2 = 'ERROR' unless defined($sig2);
+ $size = -1 unless defined($size);
my $enc = ($publishedp
? ("<enclosure url=\"$url\"\n" .
" sparkle:version=\"$v1\"\n" .
- " sparkle:dsaSignature=\"$sig\"\n" .
+ " sparkle:dsaSignature=\"$sig1\"\n" .
+ " sparkle:edSignature=\"$sig2\"\n" .
" length=\"$size\"\n" .
" type=\"application/octet-stream\" />\n")
: "<sparkle:version>$v1</sparkle:version>\n");
@@ -196,6 +218,8 @@ sub usage() {
}
sub main() {
+ binmode (STDOUT, ':utf8');
+ binmode (STDERR, ':utf8');
my ($app_name, $changelog, $archive_dir, $www_dir);
while ($#ARGV >= 0) {
$_ = shift @ARGV;
diff --git a/OSX/updates.xml b/OSX/updates.xml
index a4733a6..e782f72 100644
--- a/OSX/updates.xml
+++ b/OSX/updates.xml
@@ -8,36 +8,39 @@
<description>Updates to xscreensaver.</description>
<language>en</language>
<item>
- <title>Version 5.39</title>
- <link>https://www.jwz.org/xscreensaver/xscreensaver-5.39.dmg</link>
- <description><![CDATA[&bull; New hacks, 'razzledazzle', 'peepers', 'crumbler' and `maze3d'. <BR>&bull; More heuristics for using RSS feeds as image sources. <BR>&bull; Android: Image loading works. <BR>&bull; Built-in image assets are now PNG instead of XPM or XBM. <BR>&bull; X11: Better font-loading fallback heuristics on systems with a terrible selection of installed fonts. <BR>&bull; macOS: Retina display-related bug fixes.]]></description>
- <pubDate>Thu, 12 Apr 2018 13:00:37 -0700</pubDate>
- <enclosure url="https://www.jwz.org/xscreensaver/xscreensaver-5.39.dmg"
- sparkle:version="5.39"
- sparkle:dsaSignature="MC0CFCNqDWYNT+EDQXEpi0SAxySC77A+AhUArqhfa7sp5J8cXq42u5uFmBOQiFA="
- length="32888133"
+ <title>Version 5.42</title>
+ <link>https://www.jwz.org/xscreensaver/xscreensaver-5.42.dmg</link>
+ <description><![CDATA[&bull; macOS: Fixed Sparkle auto-updater.]]></description>
+ <pubDate>Fri, 28 Dec 2018 16:20:28 -0800</pubDate>
+ <enclosure url="https://www.jwz.org/xscreensaver/xscreensaver-5.42.dmg"
+ sparkle:version="5.42"
+ sparkle:dsaSignature="MC0CFQC1IPDQbZA8nlNOy66NB/EpedRH6QIUSezxMtsmla56Axi6QpMzIKYaFAI="
+ sparkle:edSignature="TlJojJAVzOQvQ5rUkHPvTpKtePMGKErePVI8nRvTnZjgaLR5YvxAiZAykdYeA1fip81jwzMXnOA14DxfumscAQ=="
+ length="36576409"
type="application/octet-stream" />
</item>
<item>
- <title>Version 5.38</title>
- <link>https://www.jwz.org/xscreensaver/xscreensaver-5.38.dmg</link>
- <description><![CDATA[&bull; New hack, 'esper'. <BR>&bull; macOS: Support for Retina displays. <BR>&bull; X11: `webcollage' now works with ImageMagick instead of with pbmtools if `webcollage-helper' is not installed. <BR>&bull; 'bsod' now accepts Dunning-Krugerrands. <BR>&bull; Android: These hacks work now: 'anemone', 'anemotaxis', 'atlantis', 'bouboule', 'celtic', 'compass', 'crackberg', 'epicycle', 'fuzzyflakes', 'goop', 'kumppa' 'munch', 'pacman', 'polyominoes', 'slip'. <BR>&bull; Android: Thick lines work better for: 'anemone', 'anemotaxis', 'celtic', 'compass', 'deluxe', 'epicycle', 'fuzzyflakes', 'pacman' <BR>&bull; Android: Assorted performance improvements, especially for 'kumppa' and 'slip'. <BR>&bull; Android TV: Daydreams work. <BR>&bull; iOS: Tweaks for iPhone X. <BR>&bull; Lots of xlockmore-derived hacks now have animated erase routines. <BR>&bull; 'crystal' works properly on non-X11 systems. <BR>&bull; 'm6502' now includes 'texture.asm'. <BR>&bull; X11: Try harder to find sensible fonts for the password dialog.]]></description>
- <pubDate>Wed, 20 Dec 2017 11:16:13 -0800</pubDate>
- <enclosure url="https://www.jwz.org/xscreensaver/xscreensaver-5.38.dmg"
- sparkle:version="5.38"
- sparkle:dsaSignature="MCwCFB2O5ykEfT4xCkb/CraguQZPTFJHAhQZde4jxrb5+zc2Haazg10uYLqNRw=="
- length="54125574"
+ <title>Version 5.41</title>
+ <link>https://www.jwz.org/xscreensaver/xscreensaver-5.41.dmg</link>
+ <description><![CDATA[&bull; X11: Those new font-loading fallback heuristics work again. Oops. <BR>&bull; iOS, Android: Plugged many memory leaks at exit. <BR>&bull; New hack, `handsy'. <BR>&bull; Fixed `noof' from displaying minimalistically. <BR>&bull; Rewrote `unknownpleasures' to be faster, and a true waterfall graph. <BR>&bull; BSOD Solaris improved. DVD added. <BR>&bull; Linux: If the xscreensaver daemon is setuid, then we can implore the kernel's out-of-memory killer to pretty please not unlock the screen. <BR>&bull; macOS: Upgraded Sparkle (the "Check for Updates" library). <BR>&bull; macOS: Screen saver settings work again on 10.14.]]></description>
+ <pubDate>Wed, 26 Dec 2018 23:00:51 -0800</pubDate>
+ <enclosure url="https://www.jwz.org/xscreensaver/xscreensaver-5.41.dmg"
+ sparkle:version="5.41"
+ sparkle:dsaSignature="MC0CFEH7e4ONZ1wfijWGBMEHwLESwKS3AhUAuhLIv/AsPsE60Jcmgm0eJDU0BRA="
+ sparkle:edSignature="2hXB1NVm+HZsj3aMCgOmdwX1zHT+dJ95v5aI2Cyn6vEReOUs+NSxqpoWEWQgH/AIMYhr9I3b4c5e/MceOdK7Bg=="
+ length="35542175"
type="application/octet-stream" />
</item>
<item>
- <title>Version 5.37</title>
- <link>https://www.jwz.org/xscreensaver/xscreensaver-5.37.dmg</link>
- <description><![CDATA[&bull; New hack, `vigilance'. <BR>&bull; Added Mac Software Update and VMware to `bsod'. <BR>&bull; macOS: Grabbing the desktop works again. <BR>&bull; macOS: Pinch to zoom. <BR>&bull; Android: Both Daydreams and Live Wallpapers are implemented. <BR>&bull; Updated `webcollage' for recent changes. <BR>&bull; Various bug fixes.]]></description>
- <pubDate>Wed, 05 Jul 2017 10:55:51 -0700</pubDate>
- <enclosure url="https://www.jwz.org/xscreensaver/xscreensaver-5.37.dmg"
- sparkle:version="5.37"
- sparkle:dsaSignature="MCwCFFsEWCDZbAY8Owz7k4lcs+uGM+LUAhQlLSsjg0Eqkd2TX2UfxiFdPrciTA=="
- length="52481386"
+ <title>Version 5.40</title>
+ <link>https://www.jwz.org/xscreensaver/xscreensaver-5.40.dmg</link>
+ <description><![CDATA[&bull; New hacks, `filmleader', `vfeedback'. <BR>&bull; New hack, `glitchpeg' (X11 and macOS only). <BR>&bull; GLPlanet blends between day and night maps at the dusk terminator. <BR>&bull; DymaxionMap can display arbitrary map images, and animate sunlight across the flattened globe. <BR>&bull; Tessellimage can draw either Delaunay or Voronoi tilings. <BR>&bull; XAnalogTV includes test cards. <BR>&bull; Android: These hacks work now: `blitspin', `bumps', `cityflow', `endgame', `esper', `flipscreen3d', `gleidescope', `glslideshow', `jigglypuff', `queens', `tessellimage', `xanalogtv', `xmatrix', `zoom'.]]></description>
+ <pubDate>Sun, 12 Aug 2018 16:39:18 -0700</pubDate>
+ <enclosure url="https://www.jwz.org/xscreensaver/xscreensaver-5.40.dmg"
+ sparkle:version="5.40"
+ sparkle:dsaSignature="MCwCFBVb+Vyo39OOfiuqm9K3zmrahnGIAhRK6pirSDvI1gT0ddtv+okGTW4NLg=="
+ sparkle:edSignature="R3FTLn+BURQDTK8BORtPeUrLrb2BLyhP2TeEU11Y9oXl2epIJ2owMS2BvsQke+gV/nEyzq34sUnBHnCsKvfgDg=="
+ length="34297646"
type="application/octet-stream" />
</item>
<item>
@@ -48,6 +51,7 @@
<enclosure url="https://www.jwz.org/xscreensaver/xscreensaver-5.34.dmg"
sparkle:version="5.34"
sparkle:dsaSignature="MCwCFAoZpMknlOVF0zFXlzFruzFvRXufAhQVKY0qlzelKcArrlC6k7EbHLTcyg=="
+ sparkle:edSignature="yUaWHZ0W91rhh0jsFUgtdcH17SPq66A4SdLMRqf/AU7cnVwNNBvlEJOKAJGJIMTVPpBMtYgk93YJL3/5R4+1BA=="
length="58850776"
type="application/octet-stream" />
</item>
@@ -59,6 +63,7 @@
<enclosure url="https://www.jwz.org/xscreensaver/xscreensaver-5.14.dmg"
sparkle:version="5.14"
sparkle:dsaSignature="MCwCFHrKuttf1gN27mVG3YL8+ueMJmNaAhR6aSkKQefuNFNp6MinLq2o1nocaA=="
+ sparkle:edSignature="yAg5vrtkqVdOXnloYeZ/XlwNK6VA3yWdKIOvMbpFEEGUfmsRm5/besIJBMjQkZg5BxXG8DTVh9NMHWrzZ9KvCg=="
length="54485615"
type="application/octet-stream" />
</item>
diff --git a/OSX/xscreensaver.xcodeproj/project.pbxproj b/OSX/xscreensaver.xcodeproj/project.pbxproj
index f5e98b8..adb9fd1 100644
--- a/OSX/xscreensaver.xcodeproj/project.pbxproj
+++ b/OSX/xscreensaver.xcodeproj/project.pbxproj
@@ -239,6 +239,7 @@
AF777A1D09B660B300EA3033 /* PBXTargetDependency */,
AF777A1B09B660B300EA3033 /* PBXTargetDependency */,
AF777A1909B660B300EA3033 /* PBXTargetDependency */,
+ AF62D6392180087500C57C42 /* PBXTargetDependency */,
AF1B0FC51D7AB5740011DBE4 /* PBXTargetDependency */,
AF4F10F0143450C300E34F3F /* PBXTargetDependency */,
AFC0E8C91CDC6125008CAFAC /* PBXTargetDependency */,
@@ -400,7 +401,7 @@
AF1ADA141850132600932759 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
AF1ADA161850157400932759 /* Updater.xib in Resources */ = {isa = PBXBuildFile; fileRef = AF1ADA151850157400932759 /* Updater.xib */; };
AF1ADA181850180E00932759 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF1ADA171850180E00932759 /* Sparkle.framework */; };
- AF1ADA1A1850186B00932759 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = AF1ADA171850180E00932759 /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+ AF1ADA1A1850186B00932759 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = AF1ADA171850180E00932759 /* Sparkle.framework */; };
AF1ADA1B18501B3D00932759 /* SaverRunner.icns in Resources */ = {isa = PBXBuildFile; fileRef = AF2D522513E954A0002AA818 /* SaverRunner.icns */; };
AF1ADA1F18504A4F00932759 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
AF1B0FAE1D7AB4740011DBE4 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
@@ -1849,6 +1850,20 @@
AF6048FB157C07C600CA21E4 /* jwzgles.c in Sources */ = {isa = PBXBuildFile; fileRef = AF6048F8157C07C600CA21E4 /* jwzgles.c */; };
AF6048FC157C07C600CA21E4 /* jwzgles.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048F9157C07C600CA21E4 /* jwzgles.h */; };
AF6048FD157C07C600CA21E4 /* jwzglesI.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048FA157C07C600CA21E4 /* jwzglesI.h */; };
+ AF62D61F2180070600C57C42 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
+ AF62D6212180070600C57C42 /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
+ AF62D6222180070600C57C42 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
+ AF62D6232180070600C57C42 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+ AF62D6242180070600C57C42 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+ AF62D6252180070600C57C42 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
+ AF62D6262180070600C57C42 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE0BC611A6B0D6200C098BF /* OpenGL.framework */; };
+ AF62D6272180070600C57C42 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = AF78369617DB9F25003B9FC0 /* libz.dylib */; };
+ AF62D6312180082100C57C42 /* handsy_model.c in Sources */ = {isa = PBXBuildFile; fileRef = AF62D62F2180082100C57C42 /* handsy_model.c */; };
+ AF62D6322180082100C57C42 /* handsy_model.c in Sources */ = {isa = PBXBuildFile; fileRef = AF62D62F2180082100C57C42 /* handsy_model.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+ AF62D6332180082100C57C42 /* handsy.c in Sources */ = {isa = PBXBuildFile; fileRef = AF62D6302180082100C57C42 /* handsy.c */; };
+ AF62D6342180082100C57C42 /* handsy.c in Sources */ = {isa = PBXBuildFile; fileRef = AF62D6302180082100C57C42 /* handsy.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+ AF62D6362180083E00C57C42 /* handsy.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF62D6352180083D00C57C42 /* handsy.xml */; };
+ AF62D6372180083E00C57C42 /* handsy.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF62D6352180083D00C57C42 /* handsy.xml */; };
AF633C081EE0BA6F00AB33BD /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AF633C0A1EE0BA6F00AB33BD /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
AF633C0B1EE0BA6F00AB33BD /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
@@ -1986,6 +2001,7 @@
AF68A49B19196E3E00D41CD1 /* delaunay.c in Sources */ = {isa = PBXBuildFile; fileRef = AF68A49619196E3E00D41CD1 /* delaunay.c */; };
AF68A49C19196E3E00D41CD1 /* delaunay.c in Sources */ = {isa = PBXBuildFile; fileRef = AF68A49619196E3E00D41CD1 /* delaunay.c */; };
AF69640B0E4FE3470085DBCE /* teapot.c in Sources */ = {isa = PBXBuildFile; fileRef = AFC211930E4E30C800D87B6E /* teapot.c */; };
+ AF6C07C121D6ECCE00083862 /* Sparkle.framework in Resources */ = {isa = PBXBuildFile; fileRef = AF1ADA171850180E00932759 /* Sparkle.framework */; };
AF73FF211A08AB9400E485E9 /* iSaverRunner57t.png in Resources */ = {isa = PBXBuildFile; fileRef = AF73FF201A08AB9400E485E9 /* iSaverRunner57t.png */; };
AF73FF291A09877F00E485E9 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
AF73FF2B1A09877F00E485E9 /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
@@ -4606,6 +4622,20 @@
remoteGlobalIDString = AF5ECEA92116B1A400069433;
remoteInfo = VFeedback;
};
+ AF62D61A2180070600C57C42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF4808C0098C3B6C00FB32B8;
+ remoteInfo = jwxyz;
+ };
+ AF62D6382180087500C57C42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = AF62D6182180070600C57C42;
+ remoteInfo = Handsy;
+ };
AF633C031EE0BA6F00AB33BD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
@@ -7781,6 +7811,10 @@
AF6048F8157C07C600CA21E4 /* jwzgles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jwzgles.c; path = ../jwxyz/jwzgles.c; sourceTree = "<group>"; };
AF6048F9157C07C600CA21E4 /* jwzgles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzgles.h; path = ../jwxyz/jwzgles.h; sourceTree = "<group>"; };
AF6048FA157C07C600CA21E4 /* jwzglesI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzglesI.h; path = ../jwxyz/jwzglesI.h; sourceTree = "<group>"; };
+ AF62D62D2180070600C57C42 /* Handsy.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Handsy.saver; sourceTree = BUILT_PRODUCTS_DIR; };
+ AF62D62F2180082100C57C42 /* handsy_model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = handsy_model.c; path = hacks/glx/handsy_model.c; sourceTree = "<group>"; };
+ AF62D6302180082100C57C42 /* handsy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = handsy.c; path = hacks/glx/handsy.c; sourceTree = "<group>"; };
+ AF62D6352180083D00C57C42 /* handsy.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = handsy.xml; sourceTree = "<group>"; };
AF633C161EE0BA6F00AB33BD /* Vigilance.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Vigilance.saver; sourceTree = BUILT_PRODUCTS_DIR; };
AF633C181EE0BC4900AB33BD /* vigilance.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = vigilance.xml; sourceTree = "<group>"; };
AF633C191EE0BC4A00AB33BD /* vigilance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = vigilance.c; path = hacks/glx/vigilance.c; sourceTree = "<group>"; };
@@ -9638,6 +9672,20 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AF62D6202180070600C57C42 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AF62D6212180070600C57C42 /* libjwxyz.a in Frameworks */,
+ AF62D6222180070600C57C42 /* ScreenSaver.framework in Frameworks */,
+ AF62D6232180070600C57C42 /* QuartzCore.framework in Frameworks */,
+ AF62D6242180070600C57C42 /* Cocoa.framework in Frameworks */,
+ AF62D6252180070600C57C42 /* Carbon.framework in Frameworks */,
+ AF62D6262180070600C57C42 /* OpenGL.framework in Frameworks */,
+ AF62D6272180070600C57C42 /* libz.dylib in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AF633C091EE0BA6F00AB33BD /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -12529,6 +12577,7 @@
AFA6AB0520999950006D2685 /* GlitchPEG.saver */,
AFD77E7020C23F8600A3638D /* FilmLeader.saver */,
AF5ECEC02116B1A400069433 /* VFeedback.saver */,
+ AF62D62D2180070600C57C42 /* Handsy.saver */,
);
name = Products;
path = ..;
@@ -12911,6 +12960,8 @@
AF7777E709B64CF700EA3033 /* glslideshow.c */,
AFA55C8C099349EE00F3E977 /* glsnake.c */,
AFD56E080996A07A00BA26F7 /* gltext.c */,
+ AF62D62F2180082100C57C42 /* handsy_model.c */,
+ AF62D6302180082100C57C42 /* handsy.c */,
AF1B0FBE1D7AB5210011DBE4 /* hexstrut.c */,
AF78D18A142DD96E002AAF77 /* hilbert.c */,
AFC0E8C21CDC60A9008CAFAC /* hydrostat.c */,
@@ -13139,6 +13190,7 @@
AFC258C10988A468000655EE /* greynetic.xml */,
AFC258C20988A468000655EE /* halftone.xml */,
AFC258C30988A468000655EE /* halo.xml */,
+ AF62D6352180083D00C57C42 /* handsy.xml */,
AFC258C40988A468000655EE /* helix.xml */,
AFB591BC178B81E600EA4005 /* hexadrop.xml */,
AF1B0FBF1D7AB5210011DBE4 /* hexstrut.xml */,
@@ -13567,6 +13619,7 @@
AF1AD9DF18500F9F00932759 /* Frameworks */,
AF1AD9E018500F9F00932759 /* Resources */,
AF1ADA191850185F00932759 /* CopyFiles */,
+ AF168EA821D240EB00ED6E08 /* Codesign Sparkle */,
AF1ADA1E18501DC200932759 /* Run Update Info Plist */,
);
buildRules = (
@@ -15017,6 +15070,26 @@
productReference = AF5ECEC02116B1A400069433 /* VFeedback.saver */;
productType = "com.apple.product-type.bundle";
};
+ AF62D6182180070600C57C42 /* Handsy */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = AF62D62A2180070600C57C42 /* Build configuration list for PBXNativeTarget "Handsy" */;
+ buildPhases = (
+ AF62D61B2180070600C57C42 /* Resources */,
+ AF62D61D2180070600C57C42 /* Sources */,
+ AF62D6202180070600C57C42 /* Frameworks */,
+ AF62D6282180070600C57C42 /* Rez */,
+ AF62D6292180070600C57C42 /* Run Update Info Plist */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ AF62D6192180070600C57C42 /* PBXTargetDependency */,
+ );
+ name = Handsy;
+ productName = DangerBall;
+ productReference = AF62D62D2180070600C57C42 /* Handsy.saver */;
+ productType = "com.apple.product-type.bundle";
+ };
AF633C011EE0BA6F00AB33BD /* Vigilance */ = {
isa = PBXNativeTarget;
buildConfigurationList = AF633C131EE0BA6F00AB33BD /* Build configuration list for PBXNativeTarget "Vigilance" */;
@@ -18731,7 +18804,7 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0940;
+ LastUpgradeCheck = 1010;
TargetAttributes = {
AF08398F09930B6B00277BE9 = {
DevelopmentTeam = 4627ATJELP;
@@ -18985,6 +19058,9 @@
AF5ECEA92116B1A400069433 = {
DevelopmentTeam = 4627ATJELP;
};
+ AF62D6182180070600C57C42 = {
+ DevelopmentTeam = 4627ATJELP;
+ };
AF633C011EE0BA6F00AB33BD = {
DevelopmentTeam = 4627ATJELP;
};
@@ -19756,6 +19832,7 @@
AF7777D009B64C6B00EA3033 /* GLSlideshow */,
AFA55C77099349A600F3E977 /* GLSnake */,
AFD56DF10996A03800BA26F7 /* GLText */,
+ AF62D6182180070600C57C42 /* Handsy */,
AF1B0FA71D7AB4740011DBE4 /* Hexstrut */,
AF78D175142DD8F3002AAF77 /* Hilbert */,
AFC0E8AB1CDC601A008CAFAC /* Hydrostat */,
@@ -19896,6 +19973,7 @@
AF1ADA1B18501B3D00932759 /* SaverRunner.icns in Resources */,
AF3633FC18530DD90086A439 /* sparkle_dsa_pub.pem in Resources */,
AF1ADA161850157400932759 /* Updater.xib in Resources */,
+ AF6C07C121D6ECCE00083862 /* Sparkle.framework in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -20477,6 +20555,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AF62D61B2180070600C57C42 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AF62D6362180083E00C57C42 /* handsy.xml in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AF633C041EE0BA6F00AB33BD /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -20900,6 +20986,7 @@
AF918B0F158FC53D002B5D1E /* grav.xml in Resources */,
AF918B11158FC53D002B5D1E /* halftone.xml in Resources */,
AF918B12158FC53D002B5D1E /* halo.xml in Resources */,
+ AF62D6372180083E00C57C42 /* handsy.xml in Resources */,
AF918B13158FC53D002B5D1E /* helix.xml in Resources */,
AFB591BF178B81E600EA4005 /* hexadrop.xml in Resources */,
AF1B0FC01D7AB5330011DBE4 /* hexstrut.xml in Resources */,
@@ -22771,6 +22858,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AF62D6282180070600C57C42 /* Rez */ = {
+ isa = PBXRezBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AF633C111EE0BA6F00AB33BD /* Rez */ = {
isa = PBXRezBuildPhase;
buildActionMask = 2147483647;
@@ -24036,6 +24130,25 @@
shellScript = "$SOURCE_ROOT/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
showEnvVarsInLog = 0;
};
+ AF168EA821D240EB00ED6E08 /* Codesign Sparkle */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ );
+ name = "Codesign Sparkle";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "codesign -v --force --deep -o runtime --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework/Versions/A/Resources/Autoupdate.app\ncodesign -v --force -o runtime --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework/Versions/A\n";
+ showEnvVarsInLog = 0;
+ };
AF1A176F0D6D6EE3008AF328 /* Run Update Info Plist */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -24366,6 +24479,21 @@
shellScript = "$SOURCE_ROOT/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
showEnvVarsInLog = 0;
};
+ AF62D6292180070600C57C42 /* Run Update Info Plist */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Update Info Plist";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "$SOURCE_ROOT/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
+ showEnvVarsInLog = 0;
+ };
AF633C121EE0BA6F00AB33BD /* Run Update Info Plist */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -28816,6 +28944,16 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ AF62D61D2180070600C57C42 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AF62D6312180082100C57C42 /* handsy_model.c in Sources */,
+ AF62D61F2180070600C57C42 /* XScreenSaverSubclass.m in Sources */,
+ AF62D6332180082100C57C42 /* handsy.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
AF633C061EE0BA6F00AB33BD /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -29364,6 +29502,8 @@
AF918A67158FC3E5002B5D1E /* glslideshow.c in Sources */,
AF918A68158FC3E5002B5D1E /* glsnake.c in Sources */,
AF918A69158FC3E5002B5D1E /* gltext.c in Sources */,
+ AF62D6322180082100C57C42 /* handsy_model.c in Sources */,
+ AF62D6342180082100C57C42 /* handsy.c in Sources */,
AF1B0FC31D7AB5500011DBE4 /* hexstrut.c in Sources */,
AF918A6A158FC3E5002B5D1E /* hilbert.c in Sources */,
AFC0E8C41CDC60B0008CAFAC /* hydrostat.c in Sources */,
@@ -31488,6 +31628,16 @@
target = AF5ECEA92116B1A400069433 /* VFeedback */;
targetProxy = AF5ECEC82116B31F00069433 /* PBXContainerItemProxy */;
};
+ AF62D6192180070600C57C42 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
+ targetProxy = AF62D61A2180070600C57C42 /* PBXContainerItemProxy */;
+ };
+ AF62D6392180087500C57C42 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = AF62D6182180070600C57C42 /* Handsy */;
+ targetProxy = AF62D6382180087500C57C42 /* PBXContainerItemProxy */;
+ };
AF633C021EE0BA6F00AB33BD /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
@@ -33672,6 +33822,7 @@
"$(SRCROOT)",
);
INFOPLIST_FILE = "$(SRCROOT)/Updater.plist";
+ LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
"OTHER_CFLAGS[sdk=macosx*]" = "${OBJC_NO_GC_CFLAGS}";
PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -33688,6 +33839,7 @@
"$(SRCROOT)",
);
INFOPLIST_FILE = "$(SRCROOT)/Updater.plist";
+ LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
"OTHER_CFLAGS[sdk=macosx*]" = "${OBJC_NO_GC_CFLAGS}";
PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -34815,6 +34967,28 @@
};
name = Release;
};
+ AF62D62B2180070600C57C42 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
+ "USE_GL=1",
+ "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
+ );
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Debug;
+ };
+ AF62D62C2180070600C57C42 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
+ "USE_GL=1",
+ "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
+ );
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Release;
+ };
AF633C141EE0BA6F00AB33BD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -38035,6 +38209,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = AF94E7411A16E93600289B93 /* xscreensaver.xcconfig */;
buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD)";
BUNDLE_IDENTIFIER = "org.jwz.${PROJECT_NAME:rfc1034identifier}.${PRODUCT_NAME:rfc1034identifier}";
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
@@ -38057,8 +38232,10 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphonesimulator*]" = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application";
+ CODE_SIGN_INJECT_BASE_ENTITLEMENTS = YES;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = 4627ATJELP;
+ ENABLE_HARDENED_RUNTIME = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
@@ -38120,6 +38297,7 @@
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = "";
"OTHER_CFLAGS[sdk=macosx*]" = "$(OBJC_GC_CFLAGS)";
+ OTHER_CODE_SIGN_FLAGS = "--timestamp";
"OTHER_LDFLAGS[sdk=macosx*]" = "-headerpad_max_install_names";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
@@ -38137,6 +38315,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = AF94E7411A16E93600289B93 /* xscreensaver.xcconfig */;
buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD)";
BUNDLE_IDENTIFIER = "org.jwz.${PROJECT_NAME:rfc1034identifier}.${PRODUCT_NAME:rfc1034identifier}";
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
@@ -38159,8 +38338,10 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Jamie Zawinski (4627ATJELP)";
"CODE_SIGN_IDENTITY[sdk=iphonesimulator*]" = "iPhone Distribution: Jamie Zawinski (4627ATJELP)";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application: Jamie Zawinski (4627ATJELP)";
+ CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = 4627ATJELP;
+ ENABLE_HARDENED_RUNTIME = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_NO_COMMON_BLOCKS = YES;
@@ -38221,6 +38402,7 @@
"LLVM_LTO[sdk=macosx*]" = NO;
OTHER_CFLAGS = "";
"OTHER_CFLAGS[sdk=macosx*]" = "$(OBJC_GC_CFLAGS)";
+ OTHER_CODE_SIGN_FLAGS = "--timestamp";
"OTHER_LDFLAGS[sdk=macosx*]" = "-headerpad_max_install_names";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
@@ -39006,6 +39188,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ AF62D62A2180070600C57C42 /* Build configuration list for PBXNativeTarget "Handsy" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ AF62D62B2180070600C57C42 /* Debug */,
+ AF62D62C2180070600C57C42 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
AF633C131EE0BA6F00AB33BD /* Build configuration list for PBXNativeTarget "Vigilance" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/README b/README
index af3f949..9a2a384 100644
--- a/README
+++ b/README
@@ -46,19 +46,32 @@ XScreenSaver has an extensive manual -- please read it!
===============================================================================
-5.40 * New hacks, 'filmleader', 'vfeedback'.
- * New hack, 'glitchpeg' (X11 and macOS only).
+5.42 * macOS: Fixed Sparkle auto-updater.
+
+5.41 * X11: Those new font-loading fallback heuristics work again. Oops.
+ * iOS, Android: Plugged many memory leaks at exit.
+ * New hack, `handsy'.
+ * Fixed `noof' from displaying minimalistically.
+ * Rewrote `unknownpleasures' to be faster, and a true waterfall graph.
+ * BSOD Solaris improved. DVD added.
+ * Linux: If the xscreensaver daemon is setuid, then we can implore the
+ kernel's out-of-memory killer to pretty please not unlock the screen.
+ * macOS: Upgraded Sparkle (the "Check for Updates" library).
+ * macOS: Screen saver settings work again on 10.14.
+
+5.40 * New hacks, `filmleader', `vfeedback'.
+ * New hack, `glitchpeg' (X11 and macOS only).
* GLPlanet blends between day and night maps at the dusk terminator.
* DymaxionMap can display arbitrary map images, and animate sunlight
across the flattened globe.
* Tessellimage can draw either Delaunay or Voronoi tilings.
* XAnalogTV includes test cards.
- * Android: These hacks work now: 'blitspin', 'bumps', 'cityflow',
- 'endgame', 'esper', 'flipscreen3d', 'gleidescope', 'glslideshow',
- 'jigglypuff', 'queens', 'tessellimage', 'xanalogtv', 'xmatrix',
- 'zoom'.
+ * Android: These hacks work now: `blitspin', `bumps', `cityflow',
+ `endgame', `esper', `flipscreen3d', `gleidescope', `glslideshow',
+ `jigglypuff', `queens', `tessellimage', `xanalogtv', `xmatrix',
+ `zoom'.
-5.39 * New hacks, 'razzledazzle', 'peepers', 'crumbler' and `maze3d'.
+5.39 * New hacks, `razzledazzle', `peepers', `crumbler' and `maze3d'.
* More heuristics for using RSS feeds as image sources.
* Android: Image loading works.
* Built-in image assets are now PNG instead of XPM or XBM.
@@ -66,24 +79,24 @@ XScreenSaver has an extensive manual -- please read it!
terrible selection of installed fonts.
* macOS: Retina display-related bug fixes.
-5.38 * New hack, 'esper'.
+5.38 * New hack, `esper'.
* macOS: Support for Retina displays.
* X11: `webcollage' now works with ImageMagick instead of with
pbmtools if `webcollage-helper' is not installed.
- * 'bsod' now accepts Dunning-Krugerrands.
- * Android: These hacks work now: 'anemone', 'anemotaxis', 'atlantis',
- 'bouboule', 'celtic', 'compass', 'crackberg', 'epicycle',
- 'fuzzyflakes', 'goop', 'kumppa' 'munch', 'pacman', 'polyominoes',
- 'slip'.
- * Android: Thick lines work better for: 'anemone', 'anemotaxis',
- 'celtic', 'compass', 'deluxe', 'epicycle', 'fuzzyflakes', 'pacman'
- * Android: Assorted performance improvements, especially for 'kumppa'
- and 'slip'.
+ * `bsod' now accepts Dunning-Krugerrands.
+ * Android: These hacks work now: `anemone', `anemotaxis', `atlantis',
+ `bouboule', `celtic', `compass', `crackberg', `epicycle',
+ `fuzzyflakes', `goop', `kumppa' `munch', `pacman', `polyominoes',
+ `slip'.
+ * Android: Thick lines work better for: `anemone', `anemotaxis',
+ `celtic', `compass', `deluxe', `epicycle', `fuzzyflakes', `pacman'.
+ * Android: Assorted performance improvements, especially for `kumppa'
+ and `slip'.
* Android TV: Daydreams work.
* iOS: Tweaks for iPhone X.
* Lots of xlockmore-derived hacks now have animated erase routines.
- * 'crystal' works properly on non-X11 systems.
- * 'm6502' now includes 'texture.asm'.
+ * `crystal' works properly on non-X11 systems.
+ * `m6502' now includes `texture.asm'.
* X11: Try harder to find sensible fonts for the password dialog.
5.37 * New hack, `vigilance'.
diff --git a/README.hacking b/README.hacking
index 6fc2fe5..451aec1 100644
--- a/README.hacking
+++ b/README.hacking
@@ -178,6 +178,12 @@ Programming Tips
- On modern machines, OpenGL will always run faster than Xlib. It's
also more portable. Consider writing in OpenGL whenever possible.
+ - Free any memory you allocate. While screen savers under X11 have
+ their memory freed automatically when their process is killed by
+ the XScreenSaver daemon, under iOS and Android screen savers exist
+ in long-lived processes where no such cleanup takes place.
+ Consider Valgrind or gcc -fsanitize=leak to find memory leaks.
+
==========================================================================
macOS, iOS and Android
diff --git a/aclocal.m4 b/aclocal.m4
index 37e5872..d25f855 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -39,7 +39,10 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun
#
# Modified to require ngettext
# Matthias Clasen <mclasen@redhat.com> 08/06/2004
-#
+
+# Increment this whenever this file is changed.
+#serial 1
+
# We need this here as well, since someone might use autoconf-2.5x
# to configure GLib then an older version to configure a package
# using AM_GLIB_GNU_GETTEXT
diff --git a/android/Makefile b/android/Makefile
index f0d5da0..ed65edf 100644
--- a/android/Makefile
+++ b/android/Makefile
@@ -128,6 +128,7 @@ export ANDROID_HACKS= \
grav \
greynetic \
halo \
+ handsy \
helix \
hexadrop \
hexstrut \
diff --git a/android/build.gradle b/android/build.gradle
index 648cc32..978b94c 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,8 +1,8 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
- jcenter()
google()
+ jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
@@ -12,9 +12,9 @@ buildscript {
allprojects {
repositories {
+ google()
maven { url 'https://maven.google.com' }
jcenter()
- google()
}
}
diff --git a/android/xscreensaver/.idea/caches/build_file_checksums.ser b/android/xscreensaver/.idea/caches/build_file_checksums.ser
index bc8f00c..c2ab27f 100644
--- a/android/xscreensaver/.idea/caches/build_file_checksums.ser
+++ b/android/xscreensaver/.idea/caches/build_file_checksums.ser
Binary files differ
diff --git a/android/xscreensaver/.idea/misc.xml b/android/xscreensaver/.idea/misc.xml
index c0f68ed..99202cc 100644
--- a/android/xscreensaver/.idea/misc.xml
+++ b/android/xscreensaver/.idea/misc.xml
@@ -25,7 +25,7 @@
</value>
</option>
</component>
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
diff --git a/android/xscreensaver/.idea/workspace.xml b/android/xscreensaver/.idea/workspace.xml
index 1dedd64..9f2ef73 100644
--- a/android/xscreensaver/.idea/workspace.xml
+++ b/android/xscreensaver/.idea/workspace.xml
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
+ <component name="CMakeSettings">
+ <configurations>
+ <configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
+ </configurations>
+ </component>
<component name="ChangeListManager">
<list default="true" id="41008724-035d-4e24-92b6-6dfb9231c83c" name="Default" comment="" />
<ignored path="xscreensaver.iws" />
@@ -35,8 +40,7 @@
<entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
- <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
- <folding />
+ <caret line="6" selection-start-line="6" selection-end-line="6" />
</state>
</provider>
</entry>
@@ -1659,7 +1663,7 @@
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-api/3.1.2/427e25639a55911cadcf70657c9b2ded2ad6af2b/gradle-api-3.1.2.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.databinding/compilerCommon/3.1.2/be65c11ded4242932046f23ecfa5c7ccb0e98f46/compilerCommon-3.1.2.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre8/1.2.0/505f55b9619bbc5f5e26c77427dd24a6a441eef1/kotlin-stdlib-jre8-1.2.0.jar" />
- <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/transform-api/2.0.0-deprecated-use-gradle-api/85bee1acea9e27152b920746c68133b30b11431/transform-api-2.0.0-deprecated-use-gradle-api.jar" />
+ <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/transform-api/2.0.0-deprecated-use-gradle-api/47f6c56527c42425742fa9b56ffd3fd80763fe03/transform-api-2.0.0-deprecated-use-gradle-api.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.1/5ef31c4fe953b1fd00b8a88fa1d6820e8785bb45/asm-5.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/5.1/6d1bf8989fc7901f868bee3863c44f21aa63d110/asm-analysis-5.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/5.1/25d8a575034dd9cfcb375a39b5334f0ba9c8474e/asm-commons-5.1.jar" />
@@ -1742,7 +1746,7 @@
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-api/3.1.2/427e25639a55911cadcf70657c9b2ded2ad6af2b/gradle-api-3.1.2.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.databinding/compilerCommon/3.1.2/be65c11ded4242932046f23ecfa5c7ccb0e98f46/compilerCommon-3.1.2.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre8/1.2.0/505f55b9619bbc5f5e26c77427dd24a6a441eef1/kotlin-stdlib-jre8-1.2.0.jar" />
- <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/transform-api/2.0.0-deprecated-use-gradle-api/85bee1acea9e27152b920746c68133b30b11431/transform-api-2.0.0-deprecated-use-gradle-api.jar" />
+ <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/transform-api/2.0.0-deprecated-use-gradle-api/47f6c56527c42425742fa9b56ffd3fd80763fe03/transform-api-2.0.0-deprecated-use-gradle-api.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.1/5ef31c4fe953b1fd00b8a88fa1d6820e8785bb45/asm-5.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/5.1/6d1bf8989fc7901f868bee3863c44f21aa63d110/asm-analysis-5.1.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/5.1/25d8a575034dd9cfcb375a39b5334f0ba9c8474e/asm-commons-5.1.jar" />
@@ -1826,44 +1830,18 @@
</entry>
</map>
</option>
- <option name="externalProjectsViewState">
- <projects_view />
- </option>
</component>
<component name="ProjectFrameBounds">
- <option name="x" value="90" />
- <option name="y" value="24" />
+ <option name="x" value="105" />
+ <option name="y" value="23" />
<option name="width" value="1339" />
<option name="height" value="859" />
</component>
<component name="ProjectView">
<navigator currentView="Scope" currentSubView="Project Files" proportions="" version="1">
- <flattenPackages />
- <showMembers />
- <showModules />
- <showLibraryContents />
- <hideEmptyPackages />
- <abbreviatePackageNames />
- <autoscrollToSource />
- <autoscrollFromSource />
- <sortByType />
- <manualOrder />
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
- <pane id="AndroidView">
- <subPane>
- <expand>
- <path>
- <item name="xscreensaver" type="1abcf292:AndroidViewProjectNode" />
- <item name="Gradle Scripts" type="ae0cef3a:AndroidBuildScriptsGroupNode" />
- </path>
- </expand>
- <select />
- </subPane>
- </pane>
- <pane id="PackagesPane" />
- <pane id="Scratches" />
<pane id="ProjectPane" />
<pane id="Scope">
<subPane subId="Project Files">
@@ -1887,6 +1865,18 @@
<select />
</subPane>
</pane>
+ <pane id="AndroidView">
+ <subPane>
+ <expand>
+ <path>
+ <item name="xscreensaver" type="1abcf292:AndroidViewProjectNode" />
+ <item name="Gradle Scripts" type="ae0cef3a:AndroidBuildScriptsGroupNode" />
+ </path>
+ </expand>
+ <select />
+ </subPane>
+ </pane>
+ <pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
@@ -1901,8 +1891,9 @@
<property name="SearchEverywhereHistoryKey" value="sdk manager&#9;ACTION&#9;WelcomeScreen.RunAndroidSdkManager" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="show.do.not.ask.upgrade.gradle.plugin" value="2.1.0" />
- <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1533959035566" />
+ <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1545885427557" />
<property name="device.picker.selection" value="Nexus_5_8.1" />
+ <property name="sync.plugin.last.upgrade.timestamp" value="1538463643381" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
@@ -1918,8 +1909,6 @@
</component>
<component name="RunManager">
<configuration default="true" type="AndroidJUnit" factoryName="Android JUnit">
- <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
- <module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" />
@@ -1929,22 +1918,22 @@
<option name="VM_PARAMETERS" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="file://$MODULE_DIR$" />
- <option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
- <envs />
<patterns />
<method>
+ <option name="Make" enabled="false" />
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
<configuration default="true" type="AndroidRunConfigurationType" factoryName="Android App">
- <module name="" />
<option name="DEPLOY" value="true" />
+ <option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
+ <option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="false" />
@@ -1981,19 +1970,22 @@
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
+ <option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
+ <option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sampled (Java)" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<method>
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
- <option name="com.android.instantApps.provision.BeforeRunTask" enabled="true" clearCache="false" clearProvisionedDevices="false" />
</method>
</configuration>
<configuration name="xscreensaver" type="AndroidRunConfigurationType" factoryName="Android App">
<module name="xscreensaver" />
<option name="DEPLOY" value="true" />
+ <option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
+ <option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="false" />
@@ -2030,37 +2022,16 @@
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
+ <option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
+ <option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sampled (Java)" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
- <method>
- <option name="com.android.instantApps.provision.BeforeRunTask" enabled="true" clearCache="false" clearProvisionedDevices="false" />
- </method>
</configuration>
<configuration default="true" type="Application" factoryName="Application">
- <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
- <option name="MAIN_CLASS_NAME" />
- <option name="VM_PARAMETERS" />
- <option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" />
- <option name="ENABLE_SWING_INSPECTOR" value="false" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <module name="" />
- <envs />
- </configuration>
- <configuration default="true" type="Remote" factoryName="Remote">
- <option name="USE_SOCKET_TRANSPORT" value="true" />
- <option name="SERVER_MODE" value="false" />
- <option name="SHMEM_ADDRESS" value="javadebug" />
- <option name="HOST" value="localhost" />
- <option name="PORT" value="5005" />
</configuration>
<configuration default="true" type="TestNG" factoryName="TestNG">
- <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
- <module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="SUITE_NAME" />
@@ -2073,15 +2044,12 @@
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
<option name="OUTPUT_DIRECTORY" />
- <option name="ANNOTATION_TYPE" />
- <option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<option name="USE_DEFAULT_REPORTERS" value="false" />
<option name="PROPERTIES_FILE" />
- <envs />
<properties />
<listeners />
</configuration>
@@ -2098,9 +2066,6 @@
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
</configuration>
</component>
- <component name="ShelveChangesManager" show_recycled="false">
- <option name="remove_strategy" value="false" />
- </component>
<component name="SvnConfiguration">
<configuration />
</component>
@@ -2115,43 +2080,44 @@
<servers />
</component>
<component name="ToolWindowManager">
- <frame x="90" y="24" width="1339" height="859" extended-state="0" />
+ <frame x="105" y="23" width="1339" height="859" extended-state="0" />
<layout>
- <window_info id="Android Profiler" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
- <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
- <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
- <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32928476" sideWeight="0.5312259" order="7" side_tool="true" content_ui="tabs" />
- <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
- <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
- <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
- <window_info id="Logcat" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
- <window_info id="Captures" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
- <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2544333" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
- <window_info id="Build" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32928476" sideWeight="0.47185814" order="8" side_tool="false" content_ui="tabs" />
- <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32928476" sideWeight="0.49421743" order="1" side_tool="false" content_ui="tabs" />
- <window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
- <window_info id="Device File Explorer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
- <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
- <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
- <window_info id="Nl-Palette" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
- <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
- <window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
- <window_info id="Properties" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
- <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
- <window_info id="Android Model" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
- <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32839838" sideWeight="0.49730146" order="7" side_tool="false" content_ui="tabs" />
- <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
- <window_info id="Gradle Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+ <window_info anchor="bottom" id="Android Profiler" order="7" show_stripe_button="false" />
+ <window_info anchor="bottom" id="TODO" order="6" />
+ <window_info anchor="right" id="Palette&#9;" order="3" />
+ <window_info id="Image Layers" order="3" />
+ <window_info id="Build Variants" order="3" side_tool="true" />
+ <window_info anchor="right" id="Capture Analysis" order="3" />
+ <window_info active="true" anchor="bottom" id="Event Log" order="7" sideWeight="0.5188897" side_tool="true" visible="true" weight="0.32882273" />
+ <window_info anchor="bottom" id="Run" order="2" />
+ <window_info anchor="bottom" id="Version Control" order="7" show_stripe_button="false" />
+ <window_info anchor="bottom" id="Terminal" order="7" />
+ <window_info anchor="bottom" id="Logcat" order="7" />
+ <window_info id="Captures" order="2" weight="0.25" />
+ <window_info id="Capture Tool" order="3" />
+ <window_info id="Designer" order="3" />
+ <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2544333" />
+ <window_info anchor="right" id="Assistant" visible="true" weight="0.3299923" />
+ <window_info anchor="bottom" id="Build" order="8" sideWeight="0.47185814" weight="0.32928476" />
+ <window_info anchor="bottom" id="Find" order="1" sideWeight="0.48111024" visible="true" weight="0.32882273" />
+ <window_info anchor="right" id="Gradle" order="3" />
+ <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+ <window_info anchor="right" id="Device File Explorer" order="3" side_tool="true" />
+ <window_info anchor="right" id="Theme Preview" order="3" />
+ <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
+ <window_info id="Favorites" order="3" side_tool="true" />
+ <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
+ <window_info anchor="bottom" id="Messages" order="7" sideWeight="0.49730146" visible="true" weight="0.32839838" />
+ <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
+ <window_info anchor="right" id="Android Model" order="3" side_tool="true" />
+ <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
+ <window_info id="Nl-Palette" order="3" />
+ <window_info anchor="right" id="Properties" order="3" />
+ <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+ <window_info anchor="bottom" id="Message" order="0" />
+ <window_info anchor="bottom" id="Gradle Console" order="7" side_tool="true" />
+ <window_info anchor="bottom" id="Android Monitor" order="7" />
+ <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
</layout>
</component>
<component name="Vcs.Log.UiProperties">
@@ -2170,56 +2136,68 @@
<path value="$PROJECT_DIR$/../.." />
</ignored-roots>
</component>
- <component name="XDebuggerManager">
- <breakpoint-manager />
- <watches-manager />
- </component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
<provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="0">
- <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
- <folding />
+ <state relative-caret-position="90">
+ <caret line="6" selection-start-line="6" selection-end-line="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
<provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="0">
- <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
- <folding />
- </state>
+ <state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
<provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="0">
- <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
- <folding />
- </state>
+ <state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
<provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="0">
- <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
- <folding />
- </state>
+ <state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
<provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="0">
- <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
- <folding />
- </state>
+ <state />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+ <provider selected="true" editor-type-id="text-editor">
+ <state />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+ <provider selected="true" editor-type-id="text-editor">
+ <state />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+ <provider selected="true" editor-type-id="text-editor">
+ <state />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+ <provider selected="true" editor-type-id="text-editor">
+ <state />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+ <provider selected="true" editor-type-id="text-editor">
+ <state />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+ <provider selected="true" editor-type-id="text-editor">
+ <state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
- <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
- <folding />
+ <caret line="6" selection-start-line="6" selection-end-line="6" />
</state>
</provider>
</entry>
diff --git a/android/xscreensaver/build.gradle b/android/xscreensaver/build.gradle
index f0ff9a3..038e613 100644
--- a/android/xscreensaver/build.gradle
+++ b/android/xscreensaver/build.gradle
@@ -1,8 +1,8 @@
apply plugin: 'android'
dependencies {
- compile fileTree(include: '*.jar', dir: 'libs')
- compile "com.android.support:support-v4:27.1.1"
+ implementation fileTree(include: '*.jar', dir: 'libs')
+ implementation "com.android.support:support-v4:27.1.1"
}
android {
@@ -96,6 +96,10 @@ android {
defaultConfig {
+ // Previous applicationId was "org.jwz.xscreensaver" but I had
+ // to change it because I managed to lose the signing key...
+ // Note that the Java class tree is still "org.jwz.xscreensaver".
+ applicationId "org.jwz.android.xscreensaver"
minSdkVersion 15
targetSdkVersion 27
}
diff --git a/android/xscreensaver/jni/Android.mk b/android/xscreensaver/jni/Android.mk
index 1e20a83..3396bd9 100644
--- a/android/xscreensaver/jni/Android.mk
+++ b/android/xscreensaver/jni/Android.mk
@@ -73,6 +73,7 @@ LOCAL_SRC_FILES += \
hacks/glx/gllist.c \
hacks/glx/glschool_alg.c \
hacks/glx/glschool_gl.c \
+ hacks/glx/handsy_model.c \
hacks/glx/involute.c \
hacks/glx/lament_model.c \
hacks/glx/pipeobjs.c \
diff --git a/android/xscreensaver/jni/Application.mk b/android/xscreensaver/jni/Application.mk
index d3f5436..311946d 100644
--- a/android/xscreensaver/jni/Application.mk
+++ b/android/xscreensaver/jni/Application.mk
@@ -1,7 +1,7 @@
# Get this value from android/Makefile
APP_ABI := $(shell echo $$APP_ABI)
-APP_STL := stlport_static
-APP_PLATFORM := android-14
+APP_STL := c++_static
+APP_PLATFORM := android-16
# ^^ APP_PLATFORM is minimum API version supported
# https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#target-api-set-higher-than-device-api
diff --git a/android/xscreensaver/xscreensaver.iml b/android/xscreensaver/xscreensaver.iml
index dd9566c..18e9fb0 100644
--- a/android/xscreensaver/xscreensaver.iml
+++ b/android/xscreensaver/xscreensaver.iml
@@ -79,7 +79,23 @@
<sourceFolder url="file://$MODULE_DIR$/tests/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/tests/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/tests/shaders" isTestSource="true" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/splits-support" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/reports" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 27 Platform" jdkType="Android SDK" />
diff --git a/config.h.in b/config.h.in
index 6294bee..8c031ec 100644
--- a/config.h.in
+++ b/config.h.in
@@ -211,6 +211,10 @@
examined to determine when keyboard activity has occurred. */
#undef HAVE_PROC_INTERRUPTS
+/* Define this if you have a Linux-like /proc/.../oom_score_adj file which can
+ be adjusted by root to exempt us from the out-of-memory . */
+#undef HAVE_PROC_OOM
+
/* Define this if your system supports POSIX threads. */
#undef HAVE_PTHREAD
diff --git a/configure b/configure
index 2ac1b1b..f61dfbe 100755
--- a/configure
+++ b/configure
@@ -835,6 +835,7 @@ with_xf86vmode_ext
with_xf86gamma_ext
with_randr_ext
with_proc_interrupts
+with_proc_oom
enable_locking
enable_root_passwd
with_pam
@@ -1522,6 +1523,7 @@ Installation options:
--with-randr-ext Include support for the X Resize+Rotate extension.
--with-proc-interrupts Include support for consulting the /proc/interrupts
file to notice keyboard activity.
+ --with-proc-oom Include support for disabling the OOM-killer.
--with-pam Include support for PAM (Pluggable Auth Modules.)
--with-pam-service-name NAME arg is the name of the PAM service that
xscreensaver will authenticate as.
@@ -2626,6 +2628,8 @@ echo "command line was: $0 $@"
+
+
# After checking to see that --srcdir is correct (which AC_INIT does)
# check for some random other files that come later in the tar file,
# to make sure everything is here.
@@ -10321,6 +10325,61 @@ fi
###############################################################################
#
+# Check for /proc/*/oom_score_adj.
+#
+###############################################################################
+
+have_proc_oom=no
+with_proc_oom_req=unspecified
+
+# Check whether --with-proc-oom was given.
+if test "${with_proc_oom+set}" = set; then :
+ withval=$with_proc_oom; with_proc_oom="$withval"; with_proc_oom_req="$withval"
+else
+ with_proc_oom=yes
+fi
+
+
+if test "$with_proc_oom_req" = yes; then
+
+ # Note that we may be building in an environment (e.g. Debian buildd chroot)
+ # without a proper /proc filesystem.
+ #
+ have_proc_oom=yes
+ $as_echo "#define HAVE_PROC_OOM 1" >>confdefs.h
+
+
+elif test "$with_proc_oom_req" = unspecified; then
+
+ have_proc_oom=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether /proc/$$/oom_score_adj exists" >&5
+$as_echo_n "checking whether /proc/$$/oom_score_adj exists... " >&6; }
+if ${ac_cv_have_proc_oom+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_have_proc_oom=no
+ if test -f /proc/$$/oom_score_adj; then
+ ac_cv_have_proc_oom=yes
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_proc_oom" >&5
+$as_echo "$ac_cv_have_proc_oom" >&6; }
+ have_proc_oom=$ac_cv_have_proc_oom
+
+ if test "$have_proc_oom" = yes; then
+ $as_echo "#define HAVE_PROC_OOM 1" >>confdefs.h
+
+ fi
+
+elif test "$with_proc_oom" != no; then
+ echo "error: must be yes or no: --with-proc-oom=$with_proc_oom"
+ exit 1
+fi
+
+
+###############################################################################
+#
# The --enable-locking option
#
###############################################################################
@@ -13351,7 +13410,7 @@ if ${ac_cv_mesagl_version_string+:} false; then :
$as_echo_n "(cached) " >&6
else
cat > conftest.$ac_ext <<EOF
-#line 13358 "configure"
+#line 13417 "configure"
#include "confdefs.h"
#include <GL/gl.h>
#ifndef MESA_MAJOR_VERSION
diff --git a/configure.in b/configure.in
index d439bb5..f8ed25e 100644
--- a/configure.in
+++ b/configure.in
@@ -124,6 +124,11 @@ AH_TEMPLATE([HAVE_PROC_INTERRUPTS],
can be examined to determine when keyboard activity has
occurred.])
+AH_TEMPLATE([HAVE_PROC_OOM],
+ [Define this if you have a Linux-like /proc/.../oom_score_adj file
+ which can be adjusted by root to exempt us from the out-of-memory
+ .])
+
AH_TEMPLATE([HAVE_MOTIF],[Define this if you have Motif.])
AH_TEMPLATE([HAVE_XMCOMBOBOX],
@@ -1952,6 +1957,49 @@ fi
###############################################################################
#
+# Check for /proc/*/oom_score_adj.
+#
+###############################################################################
+
+have_proc_oom=no
+with_proc_oom_req=unspecified
+AC_ARG_WITH(proc-oom,
+[ --with-proc-oom Include support for disabling the OOM-killer.],
+ [with_proc_oom="$withval"; with_proc_oom_req="$withval"],
+ [with_proc_oom=yes])
+
+if test "$with_proc_oom_req" = yes; then
+
+ # Note that we may be building in an environment (e.g. Debian buildd chroot)
+ # without a proper /proc filesystem.
+ #
+ have_proc_oom=yes
+ AC_DEFINE(HAVE_PROC_OOM)
+
+elif test "$with_proc_oom_req" = unspecified; then
+
+ have_proc_oom=no
+ AC_CACHE_CHECK([whether /proc/$$/oom_score_adj exists],
+ ac_cv_have_proc_oom,
+ [ac_cv_have_proc_oom=no
+ if test -f /proc/$$/oom_score_adj; then
+ ac_cv_have_proc_oom=yes
+ fi
+ ])
+ have_proc_oom=$ac_cv_have_proc_oom
+
+ if test "$have_proc_oom" = yes; then
+ AC_DEFINE(HAVE_PROC_OOM)
+ fi
+
+elif test "$with_proc_oom" != no; then
+ echo "error: must be yes or no: --with-proc-oom=$with_proc_oom"
+ exit 1
+fi
+
+
+###############################################################################
+#
# The --enable-locking option
#
###############################################################################
diff --git a/driver/Makefile.in b/driver/Makefile.in
index 55effec..b13853e 100644
--- a/driver/Makefile.in
+++ b/driver/Makefile.in
@@ -115,10 +115,12 @@ NOLOCK_OBJS_1 = lock.o
TEST_SRCS = test-passwd.c test-uid.c test-xdpms.c test-grab.c \
test-apm.c test-fade.c test-xinerama.c test-vp.c \
- test-randr.c xdpyinfo.c test-mlstring.c test-screens.c
+ test-randr.c xdpyinfo.c test-mlstring.c test-screens.c \
+ test-yarandom.c
TEST_EXES = test-passwd test-uid test-xdpms test-grab \
test-apm test-fade test-xinerama test-vp \
- test-randr xdpyinfo test-mlstring test-screens
+ test-randr xdpyinfo test-mlstring test-screens \
+ test-yarandom
MOTIF_LIBS = @MOTIF_LIBS@ @PNG_LIBS@ $(XMU_LIBS)
GTK_LIBS = @GTK_LIBS@ $(XMU_LIBS)
@@ -865,6 +867,9 @@ test-screens.o: screens.c
test-screens: test-screens.o
$(CC) $(LDFLAGS) -o $@ $(TEST_SCREENS_OBJS) $(SAVER_LIBS)
+test-yarandom: test-yarandom.o
+ $(CC) -DTEST $(LDFLAGS) -o $@ test-yarandom.o $(UTILS_BIN)/yarandom.o
+
xdpyinfo.o: xdpyinfo.c
$(CC) -c $(INCLUDES) -DHAVE_GLX $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) \
@@ -980,6 +985,8 @@ test-uid.o: ../config.h
test-vp.o: ../config.h
test-xdpms.o: ../config.h
test-xinerama.o: ../config.h
+test-yarandom.o: ../config.h
+test-yarandom.o: $(UTILS_SRC)/yarandom.h
timers.o: ../config.h
timers.o: $(srcdir)/prefs.h
timers.o: $(srcdir)/types.h
diff --git a/driver/XScreenSaver.ad.in b/driver/XScreenSaver.ad.in
index f4e29d4..eec998f 100644
--- a/driver/XScreenSaver.ad.in
+++ b/driver/XScreenSaver.ad.in
@@ -4,8 +4,8 @@
! a screen saver and locker for the X window system
! by Jamie Zawinski
!
-! version 5.40
-! 12-Aug-2018
+! version 5.42
+! 28-Dec-2018
!
! See "man xscreensaver" for more info. The latest version is always
! available at https://www.jwz.org/xscreensaver/
@@ -386,6 +386,7 @@ GetViewPortIsFullOfLies: False
@GL_KLUDGE@ GL: crumbler -root \n\
filmleader -root \n\
glitchpeg -root \n\
+@GL_KLUDGE@ GL: handsy -root \n\
@GL_KLUDGE@ GL: maze3d -root \n\
@GL_KLUDGE@ GL: peepers -root \n\
@GL_KLUDGE@ GL: razzledazzle -root \n\
diff --git a/driver/XScreenSaver_ad.h b/driver/XScreenSaver_ad.h
index cd4976e..2d7b168 100644
--- a/driver/XScreenSaver_ad.h
+++ b/driver/XScreenSaver_ad.h
@@ -281,6 +281,7 @@
GL: crumbler -root \\n\
filmleader -root \\n\
glitchpeg -root \\n\
+ GL: handsy -root \\n\
GL: maze3d -root \\n\
GL: peepers -root \\n\
GL: razzledazzle -root \\n\
diff --git a/driver/demo-Gtk.c b/driver/demo-Gtk.c
index 0dfc387..ef00d82 100644
--- a/driver/demo-Gtk.c
+++ b/driver/demo-Gtk.c
@@ -3970,6 +3970,11 @@ launch_preview_subproc (state *s)
}
else
{
+ /* We do this instead of relying on $XSCREENSAVER_WINDOW specifically
+ so that third-party savers that don't implement -window-id will fail:
+ otherwise we might have full-screen windows popping up when we were
+ just trying to get a preview thumbnail.
+ */
strcpy (new_cmd, cmd);
sprintf (new_cmd + strlen (new_cmd), " -window-id 0x%X",
(unsigned int) id);
diff --git a/driver/passwd.c b/driver/passwd.c
index ac5a3f0..f443726 100644
--- a/driver/passwd.c
+++ b/driver/passwd.c
@@ -1,5 +1,5 @@
/* passwd.c --- verifying typed passwords with the OS.
- * xscreensaver, Copyright (c) 1993-2014 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1993-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -24,6 +24,7 @@
#endif
#include <time.h>
#include <sys/time.h>
+#include <sys/stat.h>
#ifndef VMS
# include <pwd.h> /* for getpwuid() */
@@ -111,6 +112,44 @@ struct auth_methods methods[] = {
};
+# ifdef HAVE_PROC_OOM
+/* On some recent Linux systems you can tell the kernel's OOM-killer to
+ consider the possibility of maybe sometimes not killing you in low-memory
+ situations. Because that would unlock the screen. And that would be bad.
+
+ Linux >= 2.6.11: echo -17 > /proc/$$/oom_adj <-- ignoring this.
+ Linux >= 2.6.37: echo -1000 > /proc/$$/oom_score_adj <-- trying this.
+ */
+static void
+oom_assassin_immunity (Bool verbose_p)
+{
+ char fn[1024];
+ struct stat st;
+ FILE *out;
+ sprintf (fn, "/proc/%d/oom_score_adj", getpid());
+ if (stat(fn, &st) != 0)
+ {
+ if (verbose_p)
+ fprintf (stderr, "%s: OOM: %s does not exist\n", blurb(), fn);
+ return;
+ }
+ out = fopen (fn, "w");
+ if (!out)
+ {
+ if (verbose_p)
+ {
+ char b[2048];
+ sprintf (b, "%s: OOM: unable to write %s\n", blurb(), fn);
+ perror(b);
+ }
+ return;
+ }
+ fputs ("-1000\n", out);
+ fclose (out);
+}
+# endif /* HAVE_PROC_OOM */
+
+
Bool
lock_priv_init (int argc, char **argv, Bool verbose_p)
{
@@ -130,6 +169,11 @@ lock_priv_init (int argc, char **argv, Bool verbose_p)
fprintf (stderr, "%s: initialization of %s passwords failed.\n",
blurb(), methods[i].name);
}
+
+# ifdef HAVE_PROC_OOM
+ oom_assassin_immunity (verbose_p);
+# endif
+
return any_ok;
}
diff --git a/driver/test-yarandom.c b/driver/test-yarandom.c
new file mode 100644
index 0000000..6701ff8
--- /dev/null
+++ b/driver/test-yarandom.c
@@ -0,0 +1,66 @@
+/* test-yarandom.c --- generate a file of random bytes for analysis.
+ * xscreensaver, Copyright (c) 2018 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include "yarandom.h"
+
+char *progname = 0;
+
+int
+main (int argc, char **argv)
+{
+ unsigned long i, n;
+ char *f;
+ FILE *fd;
+
+ progname = argv[0];
+ if (argc != 3)
+ {
+ fprintf(stderr, "usage: %s bytes outfile\n", argv[0]);
+ exit(1);
+ }
+
+ n = atol (argv[1]);
+ f = argv[2];
+
+# undef ya_rand_init
+ ya_rand_init(0);
+
+ fd = fopen (f, "w");
+ if (!fd) { perror (f); exit (1); }
+
+ n /= sizeof(uint32_t);
+ for (i = 0; i < n; i++)
+ {
+ union { uint32_t i; char s[sizeof(uint32_t)]; } rr;
+ rr.i = random();
+ if (! fwrite (rr.s, sizeof(rr.s), 1, fd))
+ {
+ perror ("write");
+ exit (1);
+ }
+ }
+ fclose (fd);
+ fprintf (stderr, "%s: %s: wrote %ld bytes\n",
+ progname, f, i * sizeof(uint32_t));
+ exit(0);
+}
diff --git a/driver/xscreensaver.c b/driver/xscreensaver.c
index f5f65dc..abcb07f 100644
--- a/driver/xscreensaver.c
+++ b/driver/xscreensaver.c
@@ -1328,6 +1328,10 @@ main_loop (saver_info *si)
{
Time lock_timeout = p->lock_timeout;
+ /* If we're fading, don't lock until the fade finishes. */
+ if (si->fading_possible_p && p->fade_p)
+ lock_timeout += p->fade_seconds / 1000;
+
if (si->emergency_lock_p && p->lock_p && lock_timeout)
{
int secs = p->lock_timeout / 1000;
@@ -2071,15 +2075,15 @@ handle_clientmessage (saver_info *si, XEvent *event, Bool until_idle_p)
sprintf (buf, "LOCK ClientMessage received; %s", response);
clientmessage_response (si, window, False, buf, response);
+ /* Have to set the time or xscreensaver-command doesn't report
+ the LOCK state change. Must come before set_locked_p(). */
+ si->blank_time = time ((time_t *) 0);
+
/* Note that this leaves things in a slightly inconsistent state:
we are blanked but not locked. And blanking might actually
fail if we can't get the grab. */
set_locked_p (si, True);
- /* Have to set the time or xscreensaver-command doesn't
- report the LOCK state change. */
- si->blank_time = time ((time_t *) 0);
-
si->selection_mode = 0;
si->demoing_p = False;
diff --git a/hacks/Makefile.in b/hacks/Makefile.in
index 4556872..63e69be 100644
--- a/hacks/Makefile.in
+++ b/hacks/Makefile.in
@@ -115,15 +115,15 @@ SRCS = attraction.c blitspin.c bouboule.c braid.c bubbles.c \
euler2d.c juggle.c polyominoes.c thornbird.c fluidballs.c \
anemone.c halftone.c metaballs.c eruption.c popsquares.c \
barcode.c piecewise.c cloudlife.c fontglide.c apple2.c \
- apple2-main.c analogtv.c xanalogtv.c pong.c filmleader.c \
- wormhole.c pacman.c pacman_ai.c pacman_level.c \
+ apple2-main.c analogtv.c analogtv-cli.c xanalogtv.c pong.c \
+ filmleader.c wormhole.c pacman.c pacman_ai.c pacman_level.c \
fuzzyflakes.c anemotaxis.c memscroller.c substrate.c \
intermomentary.c fireworkx.c fiberlamp.c \
boxfit.c interaggregate.c celtic.c cwaves.c m6502.c \
asm6502.c abstractile.c lcdscrub.c hexadrop.c \
tessellimage.c delaunay.c recanim.c binaryring.c \
- glitchpeg.c vfeedback.c \
- webcollage-cocoa.m webcollage-helper-cocoa.m testx11.c
+ glitchpeg.c vfeedback.c webcollage-cocoa.m \
+ webcollage-helper-cocoa.m testx11.c
SCRIPTS = vidwhacker webcollage ljlatest
# Programs that are mentioned in XScreenSaver.ad, and that have XML files,
@@ -156,14 +156,15 @@ OBJS = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
euler2d.o juggle.o polyominoes.o thornbird.o fluidballs.o \
anemone.o halftone.o metaballs.o eruption.o popsquares.o \
barcode.o piecewise.o cloudlife.o fontglide.o apple2.o \
- apple2-main.o analogtv.o xanalogtv.o pong.o filmleader.o \
- wormhole.o pacman.o pacman_ai.o pacman_level.o \
- fuzzyflakes.o anemotaxis.o memscroller.o substrate.o \
- intermomentary.o fireworkx.o fiberlamp.o boxfit.o \
- interaggregate.o celtic.o cwaves.o webcollage-cocoa.o \
- webcollage-helper-cocoa.o m6502.o asm6502.o abstractile.o \
- lcdscrub.o hexadrop.o tessellimage.o delaunay.o recanim.o \
- binaryring.o glitchpeg.o vfeedback.o testx11.o
+ apple2-main.o analogtv.o analogtv2.o analogtv-cli.o \
+ xanalogtv.o pong.o filmleader.o wormhole.o pacman.o \
+ pacman_ai.o pacman_level.o fuzzyflakes.o anemotaxis.o \
+ memscroller.o substrate.o intermomentary.o fireworkx.o \
+ fiberlamp.o boxfit.o interaggregate.o celtic.o cwaves.o \
+ webcollage-cocoa.o webcollage-helper-cocoa.o m6502.o \
+ asm6502.o abstractile.o lcdscrub.o hexadrop.o \
+ tessellimage.o delaunay.o recanim.o binaryring.o \
+ glitchpeg.o vfeedback.o testx11.o
EXES = attraction blitspin bouboule braid decayscreen deco \
drift flame galaxy grav greynetic halo \
@@ -414,7 +415,9 @@ distdepend:: m6502.h
-e 's@\.\./utils@$$(UTILS_SRC)@g' \
-e 's@ \([^$$]\)@ $$(srcdir)/\1@g' \
-e 's@ $$(srcdir)/\(.*config.h\)@ \1@g' \
- -e 's@ $$(srcdir)/\(m6502.h\)@ \1@g' ; \
+ -e 's@ $$(srcdir)/\(m6502.h\)@ \1@g' \
+ -e 's@ $$(srcdir)/\(images/gen/\)@ \1@g' \
+ -e 's@ $$(HACK_SRC)/\(images/gen/\)@ \1@g' ; \
echo '' \
) > /tmp/distdepend.$$$$ && \
mv /tmp/distdepend.$$$$ Makefile.in
@@ -533,8 +536,9 @@ $(UTIL_OBJS):
$(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
# How we build object files in this directory.
+HACK_CFLAGS_BASE=$(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS)
.c.o:
- $(CC) -c $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) $<
+ $(CC) -c $(HACK_CFLAGS_BASE) $<
# Make sure these are regenerated when the version number ticks.
@@ -564,11 +568,13 @@ xscreensaver-sgigl: xscreensaver-sgigl.c
$(XMU_LIBS) -lX11 -lXext $(X_EXTRA_LIBS) -lm
test-utf8wc: $(UTILS_SRC)/utf8wc.c
- $(CC) $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) $(LDFLAGS)\
+ $(CC) $(HACK_CFLAGS_BASE) $(LDFLAGS)\
-o $@ -DSELFTEST $<
# Make sure the images have been packaged. This is the first one hit:
-$(HACK_BIN)/images/gen/nose-f1_png.h:
+images/gen/som_png.h:
+ cd $(srcdir)/images && $(MAKE)
+images/gen/6x10font_png.h:
cd $(srcdir)/images && $(MAKE)
# The rules for those hacks which follow the `screenhack.c' API.
@@ -691,6 +697,21 @@ apple2: apple2.o apple2-main.o $(HACK_OBJS) $(ATV) $(GRAB) $(TEXT) $(PN
xanalogtv: xanalogtv.o $(HACK_OBJS) $(ATV) $(GRAB) $(PNG)
$(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(ATV) $(GRAB) $(PNG) $(PNG_LIBS) $(HACK_LIBS) $(THRL)
+ATVCLI_CFLAGS=-DANALOGTV_SCALE=1 -DNO_CONSTRAIN_RATIO $(HACK_CFLAGS_BASE)
+analogtv2.o: Makefile
+analogtv2.o: images/gen/6x10font_png.h
+analogtv2.o: $(srcdir)/analogtv.h
+analogtv2.o: $(srcdir)/analogtv.c
+ $(CC) -o $@ -c $(ATVCLI_CFLAGS) $<
+analogtv-cli.o: $(srcdir)/analogtv-cli.c
+ $(CC) -o $@ -c $(ATVCLI_CFLAGS) $<
+
+ATVCLI=analogtv2.o $(UTILS_BIN)/yarandom.o $(THRO) $(PNG)
+analogtv-cli: analogtv-cli.o $(ATVCLI)
+ $(CC_HACK) -o $@ $@.o $(ATVCLI) $(THRL) $(PNG_LIBS) -lpng
+clean::
+ -rm -f analogtv-cli
+
distort: distort.o $(HACK_OBJS) $(GRAB) $(SHM)
$(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS) $(THRL)
@@ -1035,9 +1056,19 @@ abstractile.o: $(UTILS_SRC)/resources.h
abstractile.o: $(UTILS_SRC)/usleep.h
abstractile.o: $(UTILS_SRC)/visual.h
abstractile.o: $(UTILS_SRC)/yarandom.h
+analogtv-cli.o: $(srcdir)/analogtv.h
+analogtv-cli.o: ../config.h
+analogtv-cli.o: $(UTILS_SRC)/aligned_malloc.h
+analogtv-cli.o: $(UTILS_SRC)/font-retry.h
+analogtv-cli.o: $(UTILS_SRC)/resources.h
+analogtv-cli.o: $(UTILS_SRC)/thread_util.h
+analogtv-cli.o: $(UTILS_SRC)/visual.h
+analogtv-cli.o: $(UTILS_SRC)/xshm.h
+analogtv-cli.o: $(UTILS_SRC)/yarandom.h
+analogtv-cli.o: $(srcdir)/ximage-loader.h
analogtv.o: $(srcdir)/analogtv.h
analogtv.o: ../config.h
-analogtv.o: $(srcdir)/images/gen/6x10font_png.h
+analogtv.o: images/gen/6x10font_png.h
analogtv.o: $(UTILS_SRC)/aligned_malloc.h
analogtv.o: $(UTILS_SRC)/font-retry.h
analogtv.o: $(UTILS_SRC)/grabscreen.h
@@ -1131,7 +1162,7 @@ apple2.o: $(srcdir)/analogtv.h
apple2.o: $(srcdir)/apple2.h
apple2.o: ../config.h
apple2.o: $(srcdir)/fps.h
-apple2.o: $(srcdir)/images/gen/apple2font_png.h
+apple2.o: images/gen/apple2font_png.h
apple2.o: $(srcdir)/recanim.h
apple2.o: $(srcdir)/screenhackI.h
apple2.o: $(UTILS_SRC)/aligned_malloc.h
@@ -1204,7 +1235,7 @@ blaster.o: $(UTILS_SRC)/visual.h
blaster.o: $(UTILS_SRC)/yarandom.h
blitspin.o: ../config.h
blitspin.o: $(srcdir)/fps.h
-blitspin.o: $(srcdir)/images/gen/som_png.h
+blitspin.o: images/gen/som_png.h
blitspin.o: $(srcdir)/recanim.h
blitspin.o: $(srcdir)/screenhackI.h
blitspin.o: $(srcdir)/screenhack.h
@@ -1266,17 +1297,19 @@ bsod.o: $(srcdir)/analogtv.h
bsod.o: $(srcdir)/apple2.h
bsod.o: ../config.h
bsod.o: $(srcdir)/fps.h
-bsod.o: $(srcdir)/images/gen/amiga_png.h
-bsod.o: $(srcdir)/images/gen/android_png.h
-bsod.o: $(srcdir)/images/gen/apple_png.h
-bsod.o: $(srcdir)/images/gen/atari_png.h
-bsod.o: $(srcdir)/images/gen/atm_png.h
-bsod.o: $(srcdir)/images/gen/hmac_png.h
-bsod.o: $(srcdir)/images/gen/macbomb_png.h
-bsod.o: $(srcdir)/images/gen/mac_png.h
-bsod.o: $(srcdir)/images/gen/osx_10_2_png.h
-bsod.o: $(srcdir)/images/gen/osx_10_3_png.h
-bsod.o: $(srcdir)/images/gen/ransomware_png.h
+bsod.o: images/gen/amiga_png.h
+bsod.o: images/gen/android_png.h
+bsod.o: images/gen/apple_png.h
+bsod.o: images/gen/atari_png.h
+bsod.o: images/gen/atm_png.h
+bsod.o: images/gen/dvd_png.h
+bsod.o: images/gen/hmac_png.h
+bsod.o: images/gen/macbomb_png.h
+bsod.o: images/gen/mac_png.h
+bsod.o: images/gen/osx_10_2_png.h
+bsod.o: images/gen/osx_10_3_png.h
+bsod.o: images/gen/ransomware_png.h
+bsod.o: images/gen/sun_png.h
bsod.o: $(srcdir)/recanim.h
bsod.o: $(srcdir)/screenhackI.h
bsod.o: $(srcdir)/screenhack.h
@@ -1294,50 +1327,50 @@ bsod.o: $(UTILS_SRC)/yarandom.h
bsod.o: $(srcdir)/ximage-loader.h
bubbles-default.o: $(srcdir)/bubbles.h
bubbles-default.o: ../config.h
-bubbles-default.o: $(srcdir)/images/gen/blood10_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood11_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood1_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood2_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood3_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood4_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood5_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood6_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood7_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood8_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood9_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue10_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue11_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue1_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue2_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue3_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue4_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue5_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue6_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue7_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue8_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue9_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass10_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass11_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass1_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass2_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass3_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass4_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass5_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass6_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass7_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass8_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass9_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade10_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade11_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade1_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade2_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade3_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade4_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade5_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade6_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade7_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade8_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade9_png.h
+bubbles-default.o: images/gen/blood10_png.h
+bubbles-default.o: images/gen/blood11_png.h
+bubbles-default.o: images/gen/blood1_png.h
+bubbles-default.o: images/gen/blood2_png.h
+bubbles-default.o: images/gen/blood3_png.h
+bubbles-default.o: images/gen/blood4_png.h
+bubbles-default.o: images/gen/blood5_png.h
+bubbles-default.o: images/gen/blood6_png.h
+bubbles-default.o: images/gen/blood7_png.h
+bubbles-default.o: images/gen/blood8_png.h
+bubbles-default.o: images/gen/blood9_png.h
+bubbles-default.o: images/gen/blue10_png.h
+bubbles-default.o: images/gen/blue11_png.h
+bubbles-default.o: images/gen/blue1_png.h
+bubbles-default.o: images/gen/blue2_png.h
+bubbles-default.o: images/gen/blue3_png.h
+bubbles-default.o: images/gen/blue4_png.h
+bubbles-default.o: images/gen/blue5_png.h
+bubbles-default.o: images/gen/blue6_png.h
+bubbles-default.o: images/gen/blue7_png.h
+bubbles-default.o: images/gen/blue8_png.h
+bubbles-default.o: images/gen/blue9_png.h
+bubbles-default.o: images/gen/glass10_png.h
+bubbles-default.o: images/gen/glass11_png.h
+bubbles-default.o: images/gen/glass1_png.h
+bubbles-default.o: images/gen/glass2_png.h
+bubbles-default.o: images/gen/glass3_png.h
+bubbles-default.o: images/gen/glass4_png.h
+bubbles-default.o: images/gen/glass5_png.h
+bubbles-default.o: images/gen/glass6_png.h
+bubbles-default.o: images/gen/glass7_png.h
+bubbles-default.o: images/gen/glass8_png.h
+bubbles-default.o: images/gen/glass9_png.h
+bubbles-default.o: images/gen/jade10_png.h
+bubbles-default.o: images/gen/jade11_png.h
+bubbles-default.o: images/gen/jade1_png.h
+bubbles-default.o: images/gen/jade2_png.h
+bubbles-default.o: images/gen/jade3_png.h
+bubbles-default.o: images/gen/jade4_png.h
+bubbles-default.o: images/gen/jade5_png.h
+bubbles-default.o: images/gen/jade6_png.h
+bubbles-default.o: images/gen/jade7_png.h
+bubbles-default.o: images/gen/jade8_png.h
+bubbles-default.o: images/gen/jade9_png.h
bubbles-default.o: $(UTILS_SRC)/yarandom.h
bubbles.o: $(srcdir)/bubbles.h
bubbles.o: ../config.h
@@ -1701,7 +1734,7 @@ fireworkx.o: $(UTILS_SRC)/visual.h
fireworkx.o: $(UTILS_SRC)/yarandom.h
flag.o: ../config.h
flag.o: $(srcdir)/fps.h
-flag.o: $(srcdir)/images/gen/bob_png.h
+flag.o: images/gen/bob_png.h
flag.o: $(srcdir)/recanim.h
flag.o: $(srcdir)/screenhackI.h
flag.o: $(UTILS_SRC)/colors.h
@@ -2232,8 +2265,8 @@ m6502.o: $(UTILS_SRC)/xshm.h
m6502.o: $(UTILS_SRC)/yarandom.h
maze.o: ../config.h
maze.o: $(srcdir)/fps.h
-maze.o: $(srcdir)/images/gen/logo-180_png.h
-maze.o: $(srcdir)/images/gen/logo-50_png.h
+maze.o: images/gen/logo-180_png.h
+maze.o: images/gen/logo-50_png.h
maze.o: $(srcdir)/recanim.h
maze.o: $(srcdir)/screenhackI.h
maze.o: $(srcdir)/screenhack.h
@@ -2345,14 +2378,14 @@ nerverot.o: $(UTILS_SRC)/visual.h
nerverot.o: $(UTILS_SRC)/yarandom.h
noseguy.o: ../config.h
noseguy.o: $(srcdir)/fps.h
-noseguy.o: $(srcdir)/images/gen/nose-f1_png.h
-noseguy.o: $(srcdir)/images/gen/nose-f2_png.h
-noseguy.o: $(srcdir)/images/gen/nose-f3_png.h
-noseguy.o: $(srcdir)/images/gen/nose-f4_png.h
-noseguy.o: $(srcdir)/images/gen/nose-l1_png.h
-noseguy.o: $(srcdir)/images/gen/nose-l2_png.h
-noseguy.o: $(srcdir)/images/gen/nose-r1_png.h
-noseguy.o: $(srcdir)/images/gen/nose-r2_png.h
+noseguy.o: images/gen/nose-f1_png.h
+noseguy.o: images/gen/nose-f2_png.h
+noseguy.o: images/gen/nose-f3_png.h
+noseguy.o: images/gen/nose-f4_png.h
+noseguy.o: images/gen/nose-l1_png.h
+noseguy.o: images/gen/nose-l2_png.h
+noseguy.o: images/gen/nose-r1_png.h
+noseguy.o: images/gen/nose-r2_png.h
noseguy.o: $(srcdir)/recanim.h
noseguy.o: $(srcdir)/screenhackI.h
noseguy.o: $(srcdir)/screenhack.h
@@ -2404,7 +2437,7 @@ pacman_level.o: $(srcdir)/ximage-loader.h
pacman_level.o: $(srcdir)/xlockmoreI.h
pacman.o: ../config.h
pacman.o: $(srcdir)/fps.h
-pacman.o: $(srcdir)/images/gen/pacman_png.h
+pacman.o: images/gen/pacman_png.h
pacman.o: $(srcdir)/pacman_ai.h
pacman.o: $(srcdir)/pacman.h
pacman.o: $(srcdir)/pacman_level.h
@@ -2480,7 +2513,7 @@ petri.o: $(UTILS_SRC)/visual.h
petri.o: $(UTILS_SRC)/yarandom.h
phosphor.o: ../config.h
phosphor.o: $(srcdir)/fps.h
-phosphor.o: $(srcdir)/images/gen/6x10font_png.h
+phosphor.o: images/gen/6x10font_png.h
phosphor.o: $(srcdir)/recanim.h
phosphor.o: $(srcdir)/screenhackI.h
phosphor.o: $(srcdir)/screenhack.h
@@ -2912,7 +2945,7 @@ tessellimage.o: $(UTILS_SRC)/yarandom.h
testx11.o: ../config.h
testx11.o: $(srcdir)/fps.h
testx11.o: $(srcdir)/glx/rotator.h
-testx11.o: $(srcdir)/images/gen/logo-180_png.h
+testx11.o: images/gen/logo-180_png.h
testx11.o: $(srcdir)/recanim.h
testx11.o: $(srcdir)/screenhackI.h
testx11.o: $(srcdir)/screenhack.h
@@ -3116,10 +3149,10 @@ worm.o: $(srcdir)/xlockmore.h
xanalogtv.o: $(srcdir)/analogtv.h
xanalogtv.o: ../config.h
xanalogtv.o: $(srcdir)/fps.h
-xanalogtv.o: $(srcdir)/images/gen/logo-180_png.h
-xanalogtv.o: $(srcdir)/images/gen/testcard_bbcf_png.h
-xanalogtv.o: $(srcdir)/images/gen/testcard_pm5544_png.h
-xanalogtv.o: $(srcdir)/images/gen/testcard_rca_png.h
+xanalogtv.o: images/gen/logo-180_png.h
+xanalogtv.o: images/gen/testcard_bbcf_png.h
+xanalogtv.o: images/gen/testcard_pm5544_png.h
+xanalogtv.o: images/gen/testcard_rca_png.h
xanalogtv.o: $(srcdir)/recanim.h
xanalogtv.o: $(srcdir)/screenhackI.h
xanalogtv.o: $(srcdir)/screenhack.h
@@ -3137,7 +3170,7 @@ xanalogtv.o: $(UTILS_SRC)/yarandom.h
xanalogtv.o: $(srcdir)/ximage-loader.h
xflame.o: ../config.h
xflame.o: $(srcdir)/fps.h
-xflame.o: $(srcdir)/images/gen/bob_png.h
+xflame.o: images/gen/bob_png.h
xflame.o: $(srcdir)/recanim.h
xflame.o: $(srcdir)/screenhackI.h
xflame.o: $(srcdir)/screenhack.h
@@ -3196,10 +3229,10 @@ xlyap.o: $(UTILS_SRC)/visual.h
xlyap.o: $(UTILS_SRC)/yarandom.h
xmatrix.o: ../config.h
xmatrix.o: $(srcdir)/fps.h
-xmatrix.o: $(srcdir)/images/gen/matrix1b_png.h
-xmatrix.o: $(srcdir)/images/gen/matrix1_png.h
-xmatrix.o: $(srcdir)/images/gen/matrix2b_png.h
-xmatrix.o: $(srcdir)/images/gen/matrix2_png.h
+xmatrix.o: images/gen/matrix1b_png.h
+xmatrix.o: images/gen/matrix1_png.h
+xmatrix.o: images/gen/matrix2b_png.h
+xmatrix.o: images/gen/matrix2_png.h
xmatrix.o: $(srcdir)/recanim.h
xmatrix.o: $(srcdir)/screenhackI.h
xmatrix.o: $(srcdir)/screenhack.h
diff --git a/hacks/abstractile.c b/hacks/abstractile.c
index b4394f1..1b055c2 100644
--- a/hacks/abstractile.c
+++ b/hacks/abstractile.c
@@ -1485,6 +1485,7 @@ abstractile_init(Display *display, Window window)
fprintf(stderr, "%s: unknown tile option %s\n", progname, tile);
st->tile = TILE_RANDOM;
}
+ if (tile) free (tile);
st->speed = get_integer_resource(display, "speed", "Integer");
if (st->speed < 0) st->speed = 0;
@@ -1579,6 +1580,14 @@ static void
abstractile_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ if (st->dline) free(st->dline);
+ if (st->eline) free(st->eline);
+ if (st->grid) free(st->grid);
+ if (st->zlist) free(st->zlist);
+ if (st->fdol) free(st->fdol);
+ if (st->odi) free(st->odi);
+ XFreeGC (dpy, st->fgc);
+ XFreeGC (dpy, st->bgc);
free (st);
}
diff --git a/hacks/analogtv-cli.c b/hacks/analogtv-cli.c
new file mode 100644
index 0000000..d70db1b
--- /dev/null
+++ b/hacks/analogtv-cli.c
@@ -0,0 +1,967 @@
+/* xanalogtv-cli, Copyright (c) 2018 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * Performs the "Analog TV" transform on an image file, converting it to
+ * an MP4. The MP4 file will have the same dimensions as the input image.
+ * Requires 'ffmpeg' on $PATH.
+ *
+ * --duration Length in seconds of MP4.
+ * --powerup Do the power-on animation at the beginning.
+ * --logo FILE Small image overlayed onto the colorbars image.
+ * --audio FILE Add a soundtrack. Must be as long or longer.
+ *
+ * Created: 10-Dec-2018 by jwz.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <signal.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xos.h>
+
+#include "resources.h"
+#include "visual.h"
+#include "yarandom.h"
+#include "font-retry.h"
+#include "ximage-loader.h"
+#include "thread_util.h"
+#include "xshm.h"
+#include "analogtv.h"
+
+#ifdef HAVE_LIBPNG
+# include <png.h>
+#endif
+
+const char *progname;
+const char *progclass;
+int mono_p = 0;
+static Bool verbose_p = 0;
+
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+enum {
+ N_CHANNELS=12,
+ MAX_MULTICHAN=2,
+ MAX_STATIONS=11
+};
+
+typedef struct chansetting_s {
+ analogtv_reception recs[MAX_MULTICHAN];
+ double noise_level;
+} chansetting;
+
+struct state {
+ XImage *output_frame;
+ int frames_written;
+ char *framefile_fmt;
+
+ Display *dpy;
+ Window window;
+ analogtv *tv;
+ analogtv_font ugly_font;
+
+ int n_stations;
+ analogtv_input *stations[MAX_STATIONS];
+ Bool image_loading_p;
+ XImage *logo, *logo_mask;
+
+ int curinputi;
+ chansetting chansettings[N_CHANNELS];
+ chansetting *cs;
+};
+
+static struct state global_state;
+
+
+/* Since this program does not connect to an X server, or in fact link
+ with Xlib, we need stubs for the few X11 routines that analogtv.c calls.
+ Most are unused. It seems like I am forever implementing subsets of X11.
+ */
+
+Status
+XAllocColor (Display *dpy, Colormap cmap, XColor *c)
+{
+ abort();
+}
+
+int
+XClearArea (Display *dpy, Window win, int x, int y,
+ unsigned int w, unsigned int h, Bool exp)
+{
+ return 0;
+}
+
+int
+XClearWindow (Display *dpy, Window window)
+{
+ return 0;
+}
+
+GC
+XCreateGC(Display *dpy, Drawable d, unsigned long mask, XGCValues *gcv)
+{
+ return 0;
+}
+
+XImage *
+XCreateImage (Display *dpy, Visual *v, unsigned int depth,
+ int format, int offset, char *data,
+ unsigned int width, unsigned int height,
+ int bitmap_pad, int bytes_per_line)
+{
+ XImage *ximage = (XImage *) calloc (1, sizeof(*ximage));
+ unsigned long r, g, b;
+
+ if (depth == 0) depth = 32;
+
+ ximage->width = width;
+ ximage->height = height;
+ ximage->format = format;
+ ximage->data = data;
+ ximage->bitmap_unit = 8;
+ ximage->byte_order = LSBFirst;
+ ximage->bitmap_bit_order = ximage->byte_order;
+ ximage->bitmap_pad = bitmap_pad;
+ ximage->depth = depth;
+ visual_rgb_masks (0, v, &r, &g, &b);
+ ximage->red_mask = (depth == 1 ? 0 : r);
+ ximage->green_mask = (depth == 1 ? 0 : g);
+ ximage->blue_mask = (depth == 1 ? 0 : b);
+ ximage->bits_per_pixel = (depth == 1 ? 1 : visual_pixmap_depth (0, v));
+ ximage->bytes_per_line = bytes_per_line;
+
+ XInitImage (ximage);
+ if (! ximage->f.put_pixel) abort();
+ return ximage;
+}
+
+Pixmap
+XCreatePixmap (Display *dpy, Drawable d, unsigned int width,
+ unsigned int height, unsigned int depth)
+{
+ abort();
+}
+
+Pixmap
+XCreatePixmapFromBitmapData (Display *dpy, Drawable d, char *data,
+ unsigned int w, unsigned int h,
+ unsigned long fg, unsigned long bg,
+ unsigned int depth)
+{
+ abort();
+}
+
+int
+XDrawString (Display *dpy, Drawable d, GC gc, int x, int y, const char *s,
+ int len)
+{
+ abort();
+}
+
+int
+XFillRectangle (Display *dpy, Drawable d, GC gc, int x, int y,
+ unsigned int width, unsigned int height)
+{
+ abort();
+}
+
+int
+XFreeColors (Display *dpy, Colormap cmap, unsigned long *px, int n,
+ unsigned long planes)
+{
+ abort();
+}
+
+int
+XFreeGC (Display *dpy, GC gc)
+{
+ abort();
+}
+
+int
+XFreePixmap (Display *dpy, Pixmap p)
+{
+ abort();
+}
+
+XImage *
+XGetImage (Display *dpy, Drawable d, int x, int y,
+ unsigned int w, unsigned int h,
+ unsigned long pm, int fmt)
+{
+ abort();
+}
+
+Status
+XGetWindowAttributes (Display *dpy, Window w, XWindowAttributes *xgwa)
+{
+ struct state *st = &global_state;
+ memset (xgwa, 0, sizeof(*xgwa));
+ xgwa->width = st->output_frame->width;
+ xgwa->height = st->output_frame->height;
+ return True;
+}
+
+int
+XPutImage (Display *dpy, Drawable d, GC gc, XImage *image,
+ int src_x, int src_y, int dest_x, int dest_y,
+ unsigned int w, unsigned int h)
+{
+ struct state *st = &global_state;
+ XImage *out = st->output_frame;
+ int x, y;
+ for (y = 0; y < h; y++) {
+ int iy = src_y + y;
+ int oy = dest_y + y;
+ if (iy >= 0 &&
+ oy >= 0 &&
+ iy < image->height &&
+ oy < out->height)
+ for (x = 0; x < w; x++) {
+ int ix = src_x + x;
+ int ox = dest_x + x;
+ if (ix >= 0 &&
+ ox >= 0 &&
+ ix < image->width &&
+ ox < out->width) {
+ XPutPixel (out, ox, oy, XGetPixel (image, ix, iy));
+ }
+ }
+ }
+ return 0;
+}
+
+int
+XQueryColor (Display *dpy, Colormap cmap, XColor *color)
+{
+ uint16_t r = (color->pixel & 0x00FF0000L) >> 16;
+ uint16_t g = (color->pixel & 0x0000FF00L) >> 8;
+ uint16_t b = (color->pixel & 0x000000FFL);
+ color->red = r | (r<<8);
+ color->green = g | (g<<8);
+ color->blue = b | (b<<8);
+ color->flags = DoRed|DoGreen|DoBlue;
+ return 0;
+}
+
+int
+XQueryColors (Display *dpy, Colormap cmap, XColor *c, int n)
+{
+ int i;
+ for (i = 0; i < n; i++)
+ XQueryColor (dpy, cmap, &c[i]);
+ return 0;
+}
+
+int
+XSetForeground (Display *dpy, GC gc, unsigned long fg)
+{
+ abort();
+}
+
+int
+XSetWindowBackground (Display *dpy, Window win, unsigned long bg)
+{
+ return 0;
+}
+
+XImage *
+create_xshm_image (Display *dpy, Visual *visual,
+ unsigned int depth,
+ int format, XShmSegmentInfo *shm_info,
+ unsigned int width, unsigned int height)
+{
+# undef BitmapPad
+# define BitmapPad(dpy) 8
+ XImage *image = XCreateImage (dpy, visual, depth, format, 0, NULL,
+ width, height, BitmapPad(dpy), 0);
+ int error = thread_malloc ((void **)&image->data, dpy,
+ image->height * image->bytes_per_line);
+ if (error) {
+ XDestroyImage (image);
+ image = NULL;
+ } else {
+ memset (image->data, 0, image->height * image->bytes_per_line);
+ }
+
+ return image;
+}
+
+void
+destroy_xshm_image (Display *dpy, XImage *image, XShmSegmentInfo *shm_info)
+{
+ thread_free (image->data);
+ image->data = NULL;
+ XDestroyImage (image);
+}
+
+Bool
+get_boolean_resource (Display *dpy, char *name, char *class)
+{
+ if (!strcmp(name, "useThreads")) return True;
+ abort();
+}
+
+double
+get_float_resource (Display *dpy, char *name, char *class)
+{
+ if (!strcmp(name, "TVTint")) return 5;
+ if (!strcmp(name, "TVColor")) return 70;
+ if (!strcmp(name, "TVBrightness")) return -15;
+ if (!strcmp(name, "TVContrast")) return 150;
+ abort();
+}
+
+int
+get_integer_resource (Display *dpy, char *name, char *class)
+{
+ if (!strcmp(name, "use_cmap")) return 0;
+ abort();
+}
+
+unsigned int
+get_pixel_resource (Display *dpy, Colormap cmap, char *name, char *class)
+{
+ if (!strcmp(name, "background")) return 0;
+ abort();
+}
+
+XFontStruct *
+load_font_retry (Display *dpy, const char *xlfd)
+{
+ abort();
+}
+
+Bool
+put_xshm_image (Display *dpy, Drawable d, GC gc, XImage *image,
+ int src_x, int src_y, int dest_x, int dest_y,
+ unsigned int width, unsigned int height,
+ XShmSegmentInfo *shm_info)
+{
+ return XPutImage (dpy, d, gc, image, src_x, src_y, dest_x, dest_y,
+ width, height);
+}
+
+int
+visual_class (Screen *s, Visual *v)
+{
+ return TrueColor;
+}
+
+int
+visual_pixmap_depth (Screen *s, Visual *v)
+{
+ return 32;
+}
+
+void
+visual_rgb_masks (Screen *screen, Visual *visual,
+ unsigned long *red_mask,
+ unsigned long *green_mask,
+ unsigned long *blue_mask)
+{
+ *red_mask = 0x00FF0000L;
+ *green_mask = 0x0000FF00L;
+ *blue_mask = 0x000000FFL;
+}
+
+
+static void
+update_smpte_colorbars(analogtv_input *input)
+{
+ struct state *st = (struct state *) input->client_data;
+ int col;
+ int black_ntsc[4];
+
+ /*
+ SMPTE is the society of motion picture and television engineers, and
+ these are the standard color bars in the US. Following the partial spec
+ at http://broadcastengineering.com/ar/broadcasting_inside_color_bars/
+ These are luma, chroma, and phase numbers for each of the 7 bars.
+ */
+ double top_cb_table[7][3]={
+ {75, 0, 0.0}, /* gray */
+ {69, 31, 167.0}, /* yellow */
+ {56, 44, 283.5}, /* cyan */
+ {48, 41, 240.5}, /* green */
+ {36, 41, 60.5}, /* magenta */
+ {28, 44, 103.5}, /* red */
+ {15, 31, 347.0} /* blue */
+ };
+ double mid_cb_table[7][3]={
+ {15, 31, 347.0}, /* blue */
+ {7, 0, 0}, /* black */
+ {36, 41, 60.5}, /* magenta */
+ {7, 0, 0}, /* black */
+ {56, 44, 283.5}, /* cyan */
+ {7, 0, 0}, /* black */
+ {75, 0, 0.0} /* gray */
+ };
+
+ analogtv_lcp_to_ntsc(0.0, 0.0, 0.0, black_ntsc);
+
+ analogtv_setup_sync(input, 1, 0);
+
+ for (col=0; col<7; col++) {
+ analogtv_draw_solid_rel_lcp(input, col*(1.0/7.0), (col+1)*(1.0/7.0), 0.00, 0.68,
+ top_cb_table[col][0],
+ top_cb_table[col][1], top_cb_table[col][2]);
+
+ analogtv_draw_solid_rel_lcp(input, col*(1.0/7.0), (col+1)*(1.0/7.0), 0.68, 0.75,
+ mid_cb_table[col][0],
+ mid_cb_table[col][1], mid_cb_table[col][2]);
+ }
+
+ analogtv_draw_solid_rel_lcp(input, 0.0, 1.0/6.0,
+ 0.75, 1.00, 7, 40, 303); /* -I */
+ analogtv_draw_solid_rel_lcp(input, 1.0/6.0, 2.0/6.0,
+ 0.75, 1.00, 100, 0, 0); /* white */
+ analogtv_draw_solid_rel_lcp(input, 2.0/6.0, 3.0/6.0,
+ 0.75, 1.00, 7, 40, 33); /* +Q */
+ analogtv_draw_solid_rel_lcp(input, 3.0/6.0, 4.0/6.0,
+ 0.75, 1.00, 7, 0, 0); /* black */
+ analogtv_draw_solid_rel_lcp(input, 12.0/18.0, 13.0/18.0,
+ 0.75, 1.00, 3, 0, 0); /* black -4 */
+ analogtv_draw_solid_rel_lcp(input, 13.0/18.0, 14.0/18.0,
+ 0.75, 1.00, 7, 0, 0); /* black */
+ analogtv_draw_solid_rel_lcp(input, 14.0/18.0, 15.0/18.0,
+ 0.75, 1.00, 11, 0, 0); /* black +4 */
+ analogtv_draw_solid_rel_lcp(input, 5.0/6.0, 6.0/6.0,
+ 0.75, 1.00, 7, 0, 0); /* black */
+ if (st->logo)
+ {
+ double aspect = (double)
+ st->output_frame->width / st->output_frame->height;
+ int w2 = st->tv->xgwa.width * 0.35;
+ int h2 = st->tv->xgwa.height * 0.35 * aspect;
+ analogtv_load_ximage (st->tv, input, st->logo, st->logo_mask,
+ (st->tv->xgwa.width - w2) / 2,
+ st->tv->xgwa.height * 0.20,
+ w2, h2);
+ }
+
+ input->next_update_time += 1.0;
+}
+
+
+
+static void
+analogtv_save_frame (struct state *st, const char *outfile,
+ unsigned long frame)
+{
+ char *pngfile = malloc (strlen (st->framefile_fmt) + 40);
+ FILE *f;
+
+ sprintf (pngfile, st->framefile_fmt, (int) frame);
+ f = fopen (pngfile, "wb");
+ if (! f) {
+ fprintf (stderr, "%s: unable to write %s\n", progname, pngfile);
+ exit (1);
+ }
+
+# ifdef HAVE_LIBPNG
+ {
+ png_structp png_ptr;
+ png_infop info_ptr;
+ png_bytep row;
+ XImage *img = st->output_frame;
+ int x, y;
+
+ png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, 0, 0, 0);
+ if (!png_ptr) abort();
+ info_ptr = png_create_info_struct (png_ptr);
+ if (!info_ptr) abort();
+ if (setjmp (png_jmpbuf (png_ptr))) abort();
+
+ png_init_io (png_ptr, f);
+
+ png_set_IHDR (png_ptr, info_ptr, img->width, img->height, 8,
+ PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,
+ PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
+ png_write_info (png_ptr, info_ptr);
+
+ row = (png_bytep) malloc (3 * img->width * sizeof(png_byte));
+ if (!row) abort();
+ for (y = 0 ; y < img->height ; y++) {
+ for (x = 0 ; x < img->width ; x++) {
+ unsigned long p = XGetPixel (img, x, y);
+ row[x*3+0] = (p & 0x000000FFL);
+ row[x*3+1] = (p & 0x0000FF00L) >> 8;
+ row[x*3+2] = (p & 0x00FF0000L) >> 16;
+ }
+ png_write_row (png_ptr, row);
+ }
+
+ png_write_end (png_ptr, 0);
+
+ png_free_data (png_ptr, info_ptr, PNG_FREE_ALL, -1);
+ png_destroy_write_struct (&png_ptr, 0);
+ free (row);
+ }
+#else /* ! HAVE_LIBPNG */
+# error libpng required
+# endif /* ! HAVE_LIBPNG */
+
+ fclose (f);
+ if (verbose_p > 1)
+ fprintf (stderr, "%s: wrote %s\n", progname, pngfile);
+ free (pngfile);
+}
+
+
+static void
+delete_tmp_files(void)
+{
+ struct state *st = &global_state;
+ char outfile[2048];
+ int i;
+ for (i = 0; i <= st->frames_written; i++)
+ {
+ sprintf (outfile, st->framefile_fmt, i);
+ if (verbose_p > 1)
+ fprintf (stderr, "%s: rm %s\n", progname, outfile);
+ unlink (outfile);
+ }
+}
+
+
+static RETSIGTYPE
+analogtv_signal (int sig)
+{
+ signal (sig, SIG_DFL);
+ delete_tmp_files();
+ kill (getpid (), sig);
+}
+
+
+static void
+analogtv_write_mp4 (struct state *st, const char *outfile,
+ const char *audiofile,
+ unsigned long frames)
+{
+ char cmd[1024];
+ struct stat ss;
+
+ sprintf (cmd,
+ "ffmpeg"
+ " -hide_banner"
+ " -v 16"
+ " -framerate 30" /* rate of input: must be before -i */
+ " -i '%s'"
+ " -r 30", /* rate of output: must be after -i */
+ st->framefile_fmt);
+ if (audiofile)
+ sprintf (cmd + strlen(cmd),
+ " -i '%s'"
+ " -map 0:v:0"
+ " -map 1:a:0"
+ " -acodec aac"
+ " -shortest",
+ audiofile);
+ sprintf (cmd + strlen(cmd),
+ " -c:v libx264"
+ " -profile:v high"
+ " -crf 24" /* 18 is very high; 24 is good enough */
+ " -pix_fmt yuv420p"
+ " '%s'"
+ " </dev/null"
+ /*" 2>&-"*/,
+ outfile);
+
+ if (verbose_p > 1)
+ fprintf (stderr, "%s: exec: %s\n", progname, cmd);
+ unlink (outfile);
+ system (cmd);
+
+ delete_tmp_files();
+
+ if (stat (outfile, &ss))
+ {
+ fprintf (stderr, "%s: %s was not created\n", progname, outfile);
+ exit (1);
+ }
+
+ if (verbose_p)
+ fprintf (stderr, "%s: wrote %s (%dx%d, %lu sec, %.0f MB)\n",
+ progname, outfile,
+ st->output_frame->width, st->output_frame->height,
+ frames/30,
+ (float) ss.st_size / (1024*1024));
+}
+
+
+static void
+flip_ximage (XImage *ximage)
+{
+ char *data2, *in, *out;
+ int y;
+
+ if (!ximage) return;
+ data2 = malloc (ximage->bytes_per_line * ximage->height);
+ if (!data2) abort();
+ in = ximage->data;
+ out = data2 + ximage->bytes_per_line * (ximage->height - 1);
+ for (y = 0; y < ximage->height; y++)
+ {
+ memcpy (out, in, ximage->bytes_per_line);
+ in += ximage->bytes_per_line;
+ out -= ximage->bytes_per_line;
+ }
+ free (ximage->data);
+ ximage->data = data2;
+}
+
+
+static void
+analogtv_convert (const char *infile, const char *outfile,
+ const char *audiofile, const char *logofile,
+ int duration, Bool powerp)
+{
+ struct state *st = &global_state;
+ XImage *ximage = file_to_ximage (0, 0, infile);
+ Display *dpy = 0;
+ Window window = 0;
+ int i;
+ unsigned long curticks = 0;
+ time_t lastlog = time((time_t *)0);
+ int frames_left;
+ int fps = 30;
+
+ if (verbose_p)
+ fprintf (stderr, "%s: progname: loaded %s %dx%d\n",
+ progname, infile, ximage->width, ximage->height);
+
+ flip_ximage (ximage);
+
+ memset (st, 0, sizeof(*st));
+ st->dpy = dpy;
+ st->window = window;
+
+ st->output_frame = XCreateImage (dpy, 0, ximage->depth, ximage->format, 0,
+ NULL,
+ ximage->width & ~1, /* can't be odd */
+ ximage->height & ~1,
+ ximage->bitmap_pad, 0);
+ st->output_frame->data = (char *)
+ calloc (st->output_frame->height, st->output_frame->bytes_per_line);
+
+ {
+ char *s1, *s2;
+ st->framefile_fmt = malloc (strlen(outfile) + 100);
+ strcpy (st->framefile_fmt, outfile);
+ s1 = strrchr (st->framefile_fmt, '/');
+ s2 = strrchr (st->framefile_fmt, '.');
+ if (s2 && s2 > s1) *s2 = 0;
+ sprintf (st->framefile_fmt + strlen(st->framefile_fmt),
+ ".%08x.%%06d.png", (random() % 0xFFFFFFFF));
+ }
+
+ if (logofile) {
+ int x, y;
+ st->logo = file_to_ximage (0, 0, logofile);
+ if (verbose_p)
+ fprintf (stderr, "%s: progname: loaded %s %dx%d\n",
+ progname, logofile, st->logo->width, st->logo->height);
+ flip_ximage (st->logo);
+ /* Pull the alpha out of the logo and make a separate mask ximage. */
+ st->logo_mask = XCreateImage (dpy, 0, st->logo->depth, st->logo->format, 0,
+ NULL, st->logo->width, st->logo->height,
+ st->logo->bitmap_pad, 0);
+ st->logo_mask->data = (char *)
+ calloc (st->logo_mask->height, st->logo_mask->bytes_per_line);
+
+ for (y = 0; y < st->logo->height; y++)
+ for (x = 0; x < st->logo->width; x++) {
+ unsigned long p = XGetPixel (st->logo, x, y);
+ uint8_t a = (p & 0xFF000000L) >> 24;
+ XPutPixel (st->logo, x, y, (p & 0x00FFFFFFL));
+ XPutPixel (st->logo_mask, x, y, (a ? 0x00FFFFFFL : 0));
+ }
+ }
+
+
+ if (audiofile) {
+ struct stat ss;
+ if (stat (audiofile, &ss))
+ {
+ fprintf (stderr, "%s: %s does not exist\n", progname, audiofile);
+ exit (1);
+ }
+ }
+
+ /* Catch signals to delete tmp files before we start writing them. */
+
+ signal (SIGHUP, analogtv_signal);
+ signal (SIGINT, analogtv_signal);
+ signal (SIGQUIT, analogtv_signal);
+ signal (SIGILL, analogtv_signal);
+ signal (SIGTRAP, analogtv_signal);
+# ifdef SIGIOT
+ signal (SIGIOT, analogtv_signal);
+# endif
+ signal (SIGABRT, analogtv_signal);
+# ifdef SIGEMT
+ signal (SIGEMT, analogtv_signal);
+# endif
+ signal (SIGFPE, analogtv_signal);
+ signal (SIGBUS, analogtv_signal);
+ signal (SIGSEGV, analogtv_signal);
+# ifdef SIGSYS
+ signal (SIGSYS, analogtv_signal);
+# endif
+ signal (SIGTERM, analogtv_signal);
+# ifdef SIGXCPU
+ signal (SIGXCPU, analogtv_signal);
+# endif
+# ifdef SIGXFSZ
+ signal (SIGXFSZ, analogtv_signal);
+# endif
+# ifdef SIGDANGER
+ signal (SIGDANGER, analogtv_signal);
+# endif
+
+ st->tv=analogtv_allocate(dpy, window);
+
+ while (st->n_stations < MAX_STATIONS) {
+ analogtv_input *input=analogtv_input_allocate();
+ st->stations[st->n_stations++]=input;
+ input->client_data = st;
+ }
+
+ analogtv_set_defaults(st->tv, "");
+ st->tv->need_clear=1;
+
+ if (random()%4==0) {
+ st->tv->tint_control += pow(frand(2.0)-1.0, 7) * 180.0;
+ }
+ if (1) {
+ st->tv->color_control += frand(0.3) * RANDSIGN();
+ }
+ if (random()%4==0) {
+ st->tv->brightness_control += frand(0.15);
+ }
+ if (random()%4==0) {
+ st->tv->contrast_control += frand(0.2) * RANDSIGN();
+ }
+
+ for (i=0; i<N_CHANNELS; i++) {
+ memset(&st->chansettings[i], 0, sizeof(chansetting));
+
+ st->chansettings[i].noise_level = 0.06;
+ {
+ int last_station=42;
+ int stati;
+ for (stati=0; stati<MAX_MULTICHAN; stati++) {
+ analogtv_reception *rec=&st->chansettings[i].recs[stati];
+ int station;
+ while (1) {
+ station=random()%st->n_stations;
+ if (station!=last_station) break;
+ if ((random()%10)==0) break;
+ }
+ last_station=station;
+ rec->input = st->stations[station];
+ rec->level = pow(frand(1.0), 3.0) * 2.0 + 0.05;
+ rec->ofs=random()%ANALOGTV_SIGNAL_LEN;
+ if (random()%3) {
+ rec->multipath = frand(1.0);
+ } else {
+ rec->multipath=0.0;
+ }
+ if (stati) {
+ /* We only set a frequency error for ghosting stations,
+ because it doesn't matter otherwise */
+ rec->freqerr = (frand(2.0)-1.0) * 3.0;
+ }
+
+ if (rec->level > 0.3) break;
+ if (random()%4) break;
+ }
+ }
+ }
+
+ st->curinputi=0;
+ st->cs = &st->chansettings[st->curinputi];
+ frames_left = fps * (2 + frand(1.5));
+
+ st->tv->powerup=0.0;
+
+ /* load_station_images() */
+
+ for (i = 0; i < MAX_STATIONS; i++) {
+ analogtv_input *input = st->stations[i];
+
+ if (i == 1) { /* station 0 is the unadulterated image.
+ station 1 is colorbars. */
+ input->updater = update_smpte_colorbars;
+ } else {
+ int w = ximage->width * 0.815; /* underscan */
+ int h = ximage->height * 0.970;
+ int x = (ximage->width - w) / 2;
+ int y = (ximage->height - h) / 2;
+ analogtv_input *input = st->stations[i];
+ analogtv_setup_sync(input, 1, (random()%20)==0);
+ analogtv_load_ximage (st->tv, input, ximage, 0, x, y, w, h);
+ }
+ }
+
+
+ /* xanalogtv_draw() */
+
+ while (1) {
+ const analogtv_reception *recs[MAX_MULTICHAN];
+ unsigned rec_count = 0;
+ double curtime=curticks*0.001;
+
+ frames_left--;
+ if (frames_left <= 0) {
+ frames_left = fps * (0.5 + frand(2.5));
+
+ if (st->curinputi != 0 && !(random() % 3)) {
+ st->curinputi = 0; /* unadulterated image */
+ } else {
+ st->curinputi = 1 + (random() % (N_CHANNELS - 1));
+ }
+
+ st->cs = &st->chansettings[st->curinputi];
+ /* Set channel change noise flag */
+ st->tv->channel_change_cycles=200000;
+ }
+
+ for (i=0; i<MAX_MULTICHAN; i++) {
+ analogtv_reception *rec = &st->cs->recs[i];
+ analogtv_input *inp=rec->input;
+ if (!inp) continue;
+
+ if (inp->updater) {
+ inp->next_update_time = curtime;
+ (inp->updater)(inp);
+ }
+ rec->ofs += rec->freqerr;
+ }
+
+ st->tv->powerup=(powerp ? curtime : 9999);
+
+ if (st->curinputi == 0) {
+ XPutImage (dpy, 0, 0, ximage, 0, 0, 0, 0,
+ ximage->width, ximage->height);
+ } else {
+ for (i=0; i<MAX_MULTICHAN; i++) {
+ analogtv_reception *rec = &st->cs->recs[i];
+ if (rec->input) {
+ analogtv_reception_update(rec);
+ recs[rec_count] = rec;
+ ++rec_count;
+ }
+ }
+ analogtv_draw (st->tv, st->cs->noise_level, recs, rec_count);
+ }
+
+ analogtv_save_frame (st, outfile, st->frames_written);
+
+ if (curtime >= duration) break;
+
+ curticks += 1000/fps;
+ st->frames_written++;
+
+ if (verbose_p) {
+ unsigned long now = time((time_t *)0);
+ if (now > lastlog + 5) {
+ fprintf (stderr, "%s: %2d%%...\n", progname,
+ (int) (curtime * 100 / duration));
+ lastlog = now;
+ }
+ }
+ }
+
+ analogtv_write_mp4 (st, outfile, audiofile, st->frames_written);
+}
+
+
+static void
+usage(const char *err)
+{
+ if (err) fprintf (stderr, "%s: %s unknown\n", progname, err);
+ fprintf (stderr, "usage: %s [--verbose] [--duration secs]"
+ " [--audio mp3-file] [--no-powerup] infile.png outfile.mp4\n",
+ progname);
+ exit (1);
+}
+
+int
+main (int argc, char **argv)
+{
+ int i;
+ const char *infile = 0;
+ const char *outfile = 0;
+ int duration = 30;
+ Bool powerp = False;
+ char *audio = 0;
+ char *logo = 0;
+
+ char *s = strrchr (argv[0], '/');
+ progname = s ? s+1 : argv[0];
+ progclass = progname;
+
+ for (i = 1; i < argc; i++)
+ {
+ if (argv[i][0] == '-' && argv[i][1] == '-')
+ argv[i]++;
+ if (!strcmp(argv[i], "-v") ||
+ !strcmp(argv[i], "-verbose"))
+ verbose_p++;
+ else if (!strcmp(argv[i], "-vv")) verbose_p += 2;
+ else if (!strcmp(argv[i], "-vvv")) verbose_p += 3;
+ else if (!strcmp(argv[i], "-vvvv")) verbose_p += 4;
+ else if (!strcmp(argv[i], "-vvvvv")) verbose_p += 5;
+ else if (!strcmp(argv[i], "-duration") && argv[i+1])
+ {
+ char dummy;
+ i++;
+ if (1 != sscanf (argv[i], " %d %c", &duration, &dummy))
+ usage(argv[i]);
+ }
+ else if (!strcmp(argv[i], "-audio") && argv[i+1])
+ audio = argv[++i];
+ else if (!strcmp(argv[i], "-logo") && argv[i+1])
+ logo = argv[++i];
+ else if (!strcmp(argv[i], "-powerup") ||
+ !strcmp(argv[i], "-power"))
+ powerp = True;
+ else if (!strcmp(argv[i], "-no-powerup") ||
+ !strcmp(argv[i], "-no-power"))
+ powerp = False;
+ else if (argv[i][0] == '-')
+ usage(argv[i]);
+ else if (!infile)
+ infile = argv[i];
+ else if (!outfile)
+ outfile = argv[i];
+ else
+ usage(argv[i]);
+ }
+ if (!infile) usage("input file");
+ if (!outfile) usage("output file");
+
+# undef ya_rand_init
+ ya_rand_init (0);
+ analogtv_convert (infile, outfile, audio, logo, duration, powerp);
+ exit (0);
+}
diff --git a/hacks/analogtv.c b/hacks/analogtv.c
index fd7f504..8ef3c7d 100644
--- a/hacks/analogtv.c
+++ b/hacks/analogtv.c
@@ -329,7 +329,7 @@ analogtv_configure(analogtv *it)
wlim = it->xgwa.width;
ratio = wlim / (float) hlim;
-#ifdef HAVE_MOBILE
+#if defined(HAVE_MOBILE) || defined(NO_CONSTRAIN_RATIO)
/* Fill the whole iPhone screen, even though that distorts the image. */
min_ratio = 0;
max_ratio = 10;
@@ -1002,7 +1002,7 @@ analogtv_setup_sync(analogtv_input *input, int do_cb, int do_ssavi)
if (do_cb) {
/* 9 cycles of colorburst */
- for (i=ANALOGTV_CB_START; i<ANALOGTV_CB_START+36; i+=4) {
+ for (i=ANALOGTV_CB_START; i<ANALOGTV_CB_START+36*ANALOGTV_SCALE; i+=4*ANALOGTV_SCALE) {
sig[i+1] += ANALOGTV_CB_LEVEL;
sig[i+3] -= ANALOGTV_CB_LEVEL;
}
@@ -1022,11 +1022,11 @@ analogtv_sync(analogtv *it)
float cbfc=1.0f/128.0f;
/* sp = it->rx_signal + lineno*ANALOGTV_H + cur_hsync;*/
- for (i=-32; i<32; i++) {
+ for (i=-32*ANALOGTV_SCALE; i<32*ANALOGTV_SCALE; i++) {
lineno = (cur_vsync + i + ANALOGTV_V) % ANALOGTV_V;
sp = it->rx_signal + lineno*ANALOGTV_H;
filt=0.0f;
- for (j=0; j<ANALOGTV_H; j+=ANALOGTV_H/16) {
+ for (j=0; j<ANALOGTV_H; j+=ANALOGTV_H/(16*ANALOGTV_SCALE)) {
filt += sp[j];
}
filt *= it->agclevel;
@@ -1039,11 +1039,11 @@ analogtv_sync(analogtv *it)
for (lineno=0; lineno<ANALOGTV_V; lineno++) {
- if (lineno>5 && lineno<ANALOGTV_V-3) { /* ignore vsync interval */
+ if (lineno>5*ANALOGTV_SCALE && lineno<ANALOGTV_V-3*ANALOGTV_SCALE) { /* ignore vsync interval */
unsigned lineno2 = (lineno + cur_vsync + ANALOGTV_V)%ANALOGTV_V;
if (!lineno2) lineno2 = ANALOGTV_V;
sp = it->rx_signal + lineno2*ANALOGTV_H + cur_hsync;
- for (i=-8; i<8; i++) {
+ for (i=-8*ANALOGTV_SCALE; i<8*ANALOGTV_SCALE; i++) {
osc = (float)(ANALOGTV_H+i)/(float)ANALOGTV_H;
filt=(sp[i-3]+sp[i-2]+sp[i-1]+sp[i]) * it->agclevel;
@@ -1061,9 +1061,9 @@ analogtv_sync(analogtv *it)
cycles.
*/
- if (lineno>15) {
+ if (lineno>15*ANALOGTV_SCALE) {
sp = it->rx_signal + lineno*ANALOGTV_H + (cur_hsync&~3);
- for (i=ANALOGTV_CB_START+8; i<ANALOGTV_CB_START+36-8; i++) {
+ for (i=ANALOGTV_CB_START+8*ANALOGTV_SCALE; i<ANALOGTV_CB_START+(36-8)*ANALOGTV_SCALE; i++) {
it->cb_phase[i&3] = it->cb_phase[i&3]*(1.0f-cbfc) +
sp[i]*it->agclevel*cbfc;
}
@@ -2009,7 +2009,7 @@ analogtv_load_ximage(analogtv *it, analogtv_input *input,
unsigned long black = 0; /* not BlackPixelOfScreen (it->xgwa.screen); */
int x_length=ANALOGTV_PIC_LEN;
- int y_overscan=5; /* overscan this much top and bottom */
+ int y_overscan=5*ANALOGTV_SCALE; /* overscan this much top and bottom */
int y_scanlength=ANALOGTV_VISLINES+2*y_overscan;
if (target_w > 0) x_length = x_length * target_w / it->xgwa.width;
@@ -2297,8 +2297,8 @@ analogtv_make_font(Display *dpy, Window window, analogtv_font *f,
f->text_im->bytes_per_line);
}
- f->x_mult=4;
- f->y_mult=2;
+ f->x_mult=4 * ANALOGTV_SCALE;
+ f->y_mult=2 * ANALOGTV_SCALE;
}
int
@@ -2415,7 +2415,7 @@ analogtv_draw_string(analogtv_input *input, analogtv_font *f,
{
while (*s) {
analogtv_draw_char(input, f, *s, x, y, ntsc);
- x += f->char_w * 4;
+ x += f->char_w * f->x_mult;
s++;
}
}
@@ -2424,7 +2424,7 @@ void
analogtv_draw_string_centered(analogtv_input *input, analogtv_font *f,
char *s, int x, int y, int ntsc[4])
{
- int width=strlen(s) * f->char_w * 4;
+ int width=strlen(s) * f->char_w * f->x_mult;
x -= width/2;
analogtv_draw_string(input, f, s, x, y, ntsc);
diff --git a/hacks/analogtv.h b/hacks/analogtv.h
index e3170f1..4b11b58 100644
--- a/hacks/analogtv.h
+++ b/hacks/analogtv.h
@@ -19,21 +19,29 @@
# define HAVE_MOBILE
#endif
+/* To simulate an NTSC CRT monitor with way more scanlines, and thus
+ apply an ahistorical tv-like effect to a larger image, increase
+ this resolution multiplier.
+ */
+#ifndef ANALOGTV_SCALE
+# define ANALOGTV_SCALE 1
+#endif
+
/*
You'll need these to generate standard NTSC TV signals
*/
enum {
/* We don't handle interlace here */
- ANALOGTV_V=262,
- ANALOGTV_TOP=30,
- ANALOGTV_VISLINES=200,
+ ANALOGTV_V=262*ANALOGTV_SCALE,
+ ANALOGTV_TOP=30*ANALOGTV_SCALE,
+ ANALOGTV_VISLINES=200*ANALOGTV_SCALE,
ANALOGTV_BOT=ANALOGTV_TOP + ANALOGTV_VISLINES,
/* This really defines our sampling rate, 4x the colorburst
frequency. Handily equal to the Apple II's dot clock.
You could also make a case for using 3x the colorburst freq,
but 4x isn't hard to deal with. */
- ANALOGTV_H=912,
+ ANALOGTV_H=912*ANALOGTV_SCALE,
/* Each line is 63500 nS long. The sync pulse is 4700 nS long, etc.
Define sync, back porch, colorburst, picture, and front porch
@@ -54,7 +62,7 @@ enum {
ANALOGTV_VIS_END=ANALOGTV_PIC_START + (ANALOGTV_PIC_LEN*7/8),
ANALOGTV_VIS_LEN=ANALOGTV_VIS_END-ANALOGTV_VIS_START,
- ANALOGTV_HASHNOISE_LEN=6,
+ ANALOGTV_HASHNOISE_LEN=6*ANALOGTV_SCALE,
ANALOGTV_GHOSTFIR_LEN=4,
diff --git a/hacks/anemone.c b/hacks/anemone.c
index deedb27..f0ea5e8 100644
--- a/hacks/anemone.c
+++ b/hacks/anemone.c
@@ -409,6 +409,9 @@ anemone_free (Display *dpy, Window window, void *closure)
struct state *st = (struct state *) closure;
if (st->vPendage) free (st->vPendage);
if (st->appD) free (st->appD);
+ XFreeGC (dpy, st->gcDraw);
+ XFreeGC (dpy, st->gcClear);
+ free (st->colors);
free (st);
}
diff --git a/hacks/anemotaxis.c b/hacks/anemotaxis.c
index 9f240e8..04c12e3 100644
--- a/hacks/anemotaxis.c
+++ b/hacks/anemotaxis.c
@@ -722,6 +722,9 @@ anemotaxis_free (Display *dpy, Window window, void *closure)
if (st->searcher[i]) destroy_searcher (st->searcher[i]);
free (st->searcher);
}
+ XFreeGC (dpy, st->gcDraw);
+ XFreeGC (dpy, st->gcClear);
+ free (st->colors);
free (st);
}
diff --git a/hacks/apple2-main.c b/hacks/apple2-main.c
index 3063b58..c30be1f 100644
--- a/hacks/apple2-main.c
+++ b/hacks/apple2-main.c
@@ -813,7 +813,7 @@ struct terminal_controller_data {
/* The structure of closure linkage throughout this code is so amazingly
baroque that I can't get to the 'struct state' from where I need it. */
-static const char *global_program;
+static char *global_program;
static Bool global_fast_p;
@@ -1825,8 +1825,10 @@ apple2_init (Display *dpy, Window window)
}
if (s) free (s);
- global_program = get_string_resource (dpy, "program", "Program");
- global_fast_p = get_boolean_resource (dpy, "fast", "Boolean");
+ if (!global_program) {
+ global_program = get_string_resource (dpy, "program", "Program");
+ global_fast_p = get_boolean_resource (dpy, "fast", "Boolean");
+ }
/* Kludge for MacOS standalone mode: see OSX/SaverRunner.m. */
@@ -1836,7 +1838,8 @@ apple2_init (Display *dpy, Window window)
{
st->controller = terminal_controller;
st->random_p = False;
- global_program = getenv ("SHELL");
+ if (global_program) free (global_program);
+ global_program = strdup (getenv ("SHELL"));
global_fast_p = True;
}
}
@@ -1906,6 +1909,8 @@ apple2_free (Display *dpy, Window window, void *closure)
if (apple2_one_frame (st->sim))
abort(); /* should have freed! */
}
+ if (global_program) free (global_program);
+ global_program = 0;
free (st);
}
diff --git a/hacks/attraction.c b/hacks/attraction.c
index 4fe22c2..25bc3b0 100644
--- a/hacks/attraction.c
+++ b/hacks/attraction.c
@@ -227,6 +227,7 @@ attraction_init (Display *dpy, Window window)
progname, mode_str);
exit (1);
}
+ if (mode_str) free (mode_str);
graph_mode_str = get_string_resource (dpy, "graphmode", "Mode");
if (! graph_mode_str) st->graph_mode = graph_none;
@@ -241,6 +242,7 @@ attraction_init (Display *dpy, Window window)
progname, graph_mode_str);
exit (1);
}
+ if (graph_mode_str) free (graph_mode_str);
/* only allocate memory if it is needed */
if(st->graph_mode != graph_none)
@@ -1044,6 +1046,9 @@ attraction_free (Display *dpy, Window window, void *closure)
if (st->colors) free (st->colors);
if (st->spl) free_spline (st->spl);
+ XFreeGC (dpy, st->draw_gc);
+ XFreeGC (dpy, st->erase_gc);
+
free (st);
}
diff --git a/hacks/barcode.c b/hacks/barcode.c
index 31574bd..2ce609e 100644
--- a/hacks/barcode.c
+++ b/hacks/barcode.c
@@ -391,14 +391,12 @@ static void bitmapClear (Bitmap *b)
memset (b->buf, 0, b->widthBytes * b->height);
}
-#if 0
/* free a bitmap */
static void bitmapFree (Bitmap *b)
{
free (b->buf);
free (b);
}
-#endif
/* get the byte value at the given byte-offset coordinates in the given
@@ -1913,6 +1911,16 @@ barcode_reshape (Display *dpy, Window window, void *closure,
static void
barcode_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ int i;
+ XFreeGC (dpy, st->theGC);
+ st->theImage->data = 0;
+ XDestroyImage (st->theImage);
+ bitmapFree (st->theBitmap);
+ for (i = 0; i < st->barcode_max; i++)
+ bitmapFree (st->barcodes[i].bitmap);
+ free (st->barcodes);
+ free (st);
}
diff --git a/hacks/binaryring.c b/hacks/binaryring.c
index 3cbaec2..755a1b4 100644
--- a/hacks/binaryring.c
+++ b/hacks/binaryring.c
@@ -554,10 +554,12 @@ static void binaryring_free ( Display* display, Window win, void *closure ) {
XWindowAttributes tmp;
XGetWindowAttributes(display, win, &tmp);
- free( st->buffer );
- free( st->particles );
-
- free ( st );
+ if (st->gc) XFreeGC (display, st->gc);
+ if (st->pix) XFreePixmap (display, st->pix);
+ if (st->buf) XDestroyImage (st->buf);
+ free (st->buffer);
+ free (st->particles);
+ free (st);
}
diff --git a/hacks/blaster.c b/hacks/blaster.c
index a60351a..5ab3741 100644
--- a/hacks/blaster.c
+++ b/hacks/blaster.c
@@ -1083,6 +1083,8 @@ blaster_free (Display *dpy, Window window, void *closure)
if (st->l_color1) XFreeGC (dpy, st->l_color1);
if (st->s_color) XFreeGC (dpy, st->s_color);
if (st->black) XFreeGC (dpy, st->black);
+ if (st->EXPLODE_COLOR_1) XFreeGC (dpy, st->EXPLODE_COLOR_1);
+ if (st->EXPLODE_COLOR_2) XFreeGC (dpy, st->EXPLODE_COLOR_2);
if (st->stars) free (st->stars);
if (st->mother) {
free (st->mother->lasers);
diff --git a/hacks/blitspin.c b/hacks/blitspin.c
index d27271d..00d9109 100644
--- a/hacks/blitspin.c
+++ b/hacks/blitspin.c
@@ -256,11 +256,13 @@ blitspin_init (Display *d_arg, Window w_arg)
bitmap_name = get_string_resource (st->dpy, "bitmap", "Bitmap");
if (! bitmap_name || !*bitmap_name)
- bitmap_name = "(default)";
+ bitmap_name = strdup ("(default)");
if (!strcasecmp (bitmap_name, "(default)") ||
- !strcasecmp (bitmap_name, "default"))
- bitmap_name = "(screen)";
+ !strcasecmp (bitmap_name, "default")) {
+ free (bitmap_name);
+ bitmap_name = strdup ("(screen)");
+ }
if (!strcasecmp (bitmap_name, "(builtin)") ||
!strcasecmp (bitmap_name, "builtin"))
@@ -309,6 +311,7 @@ blitspin_init (Display *d_arg, Window w_arg)
blitspin_init_2 (st);
}
+ if (bitmap_name) free (bitmap_name);
return st;
}
@@ -421,6 +424,18 @@ blitspin_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
blitspin_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+# ifdef USE_XCOPYAREA
+ if (st->gc_set) XFreeGC (dpy, st->gc_set);
+ if (st->gc_clear) XFreeGC (dpy, st->gc_clear);
+ if (st->gc_copy) XFreeGC (dpy, st->gc_copy);
+ if (st->gc_and) XFreeGC (dpy, st->gc_and);
+ if (st->gc_or) XFreeGC (dpy, st->gc_or);
+ if (st->gc_xor) XFreeGC (dpy, st->gc_xor);
+# endif
+ if (st->gc) XFreeGC (dpy, st->gc);
+ XFreePixmap (dpy, st->bitmap);
+ free (st);
}
diff --git a/hacks/boxfit.c b/hacks/boxfit.c
index 1b1d0d7..09d2ef7 100644
--- a/hacks/boxfit.c
+++ b/hacks/boxfit.c
@@ -88,6 +88,7 @@ reset_boxes (state *st)
progname, s);
exit (1);
}
+ free (s);
}
if (st->mode == -1)
@@ -514,6 +515,11 @@ boxfit_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
boxfit_free (Display *dpy, Window window, void *closure)
{
+ state *st = (state *) closure;
+ if (st->boxes) free (st->boxes);
+ if (st->colors) free (st->colors);
+ XFreeGC (dpy, st->gc);
+ free (st);
}
diff --git a/hacks/bsod.c b/hacks/bsod.c
index ff6c359..f3af911 100644
--- a/hacks/bsod.c
+++ b/hacks/bsod.c
@@ -61,6 +61,8 @@
#include "images/gen/macbomb_png.h"
#include "images/gen/apple_png.h"
#include "images/gen/atm_png.h"
+#include "images/gen/sun_png.h"
+#include "images/gen/dvd_png.h"
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -481,8 +483,14 @@ draw_char (struct bsod_state *bst, char c)
{
int dir, ascent, descent;
XCharStruct ov;
+ Bool cursorp = (c == '\033'); /* apparently \e is non-standard now! */
+
+ if (cursorp) c = ' ';
XTextExtents (bst->font, &c, 1, &dir, &ascent, &descent, &ov);
+ if (bst->x < bst->left_margin)
+ bst->x = bst->left_margin;
+
if ((bst->wrap_p || bst->word_wrap_p) &&
bst->x + ov.width > bst->xgwa.width - bst->right_margin - bst->xoff)
{
@@ -518,8 +526,30 @@ draw_char (struct bsod_state *bst, char c)
}
}
+ /* We render the character ESC as an inverted space (block cursor). */
+
+ if (cursorp)
+ {
+ unsigned long swap = bst->fg;
+ bst->fg = bst->bg;
+ bst->bg = swap;
+ XSetForeground (bst->dpy, bst->gc, bst->fg);
+ XSetBackground (bst->dpy, bst->gc, bst->bg);
+ }
+
XDrawImageString (bst->dpy, bst->window, bst->gc,
bst->x, bst->y, &c, 1);
+
+ if (cursorp)
+ {
+ unsigned long swap = bst->fg;
+ bst->fg = bst->bg;
+ bst->bg = swap;
+ XSetForeground (bst->dpy, bst->gc, bst->fg);
+ XSetBackground (bst->dpy, bst->gc, bst->bg);
+ c = ' ';
+ }
+
bst->x += ov.width;
if (bst->word_wrap_p)
@@ -670,6 +700,11 @@ bsod_pop (struct bsod_state *bst)
int h = (long) bst->queue[bst->pos].arg4;
int tox = (long) bst->queue[bst->pos].arg5;
int toy = (long) bst->queue[bst->pos].arg6;
+
+ /* If ~0, place pixmap at current text pos */
+ if (tox == ~0) tox = bst->x;
+ if (toy == ~0) toy = bst->y - bst->font->ascent;
+
if (type == PIXMAP && bst->mask)
{
XSetClipMask (bst->dpy, bst->gc, bst->mask);
@@ -838,7 +873,7 @@ make_bsod_state (Display *dpy, Window window,
char buf1[1024], buf2[1024];
char buf5[1024], buf6[1024];
char buf7[1024], buf8[1024];
- const char *font1, *font3, *font4;
+ char *font1, *font3, *font4;
bst = (struct bsod_state *) calloc (1, sizeof (*bst));
bst->queue_size = 10;
@@ -939,6 +974,11 @@ make_bsod_state (Display *dpy, Window window,
bst->y = bst->font->ascent + bst->left_margin + bst->yoff;
XSetWindowBackground (dpy, window, gcv.background);
+
+ if (font1) free (font1);
+ if (font3) free (font3);
+ if (font4) free (font4);
+
return bst;
}
@@ -956,6 +996,8 @@ free_bsod_state (struct bsod_state *bst)
XFreePixmap(bst->dpy, bst->mask);
XFreeFont (bst->dpy, bst->font);
+ if (bst->fontB && bst->fontB != bst->font) XFreeFont (bst->dpy, bst->fontB);
+ if (bst->fontC && bst->fontC != bst->font) XFreeFont (bst->dpy, bst->fontC);
XFreeGC (bst->dpy, bst->gc);
for (i = 0; i < bst->queue_size; i++)
@@ -3217,6 +3259,36 @@ sparc_solaris (Display *dpy, Window window)
{
struct bsod_state *bst = make_bsod_state (dpy, window, "solaris", "Solaris");
int i;
+ int pix_w = 0, pix_h = 0;
+ int char_width;
+ Pixmap mask = 0;
+ Pixmap pixmap = image_data_to_pixmap (dpy, window,
+ sun_png, sizeof(sun_png),
+ &pix_w, &pix_h, &mask);
+# if 0
+ if (pixmap &&
+ pix_w < bst->xgwa.width / 2 &&
+ pix_h < bst->xgwa.height / 2)
+ {
+ int i, n = 1;
+ if (bst->xgwa.width > 2560) n++; /* Retina displays */
+ for (i = 0; i < n; i++)
+ {
+ pixmap = double_pixmap (dpy, bst->xgwa.visual,
+ bst->xgwa.depth, pixmap, pix_w, pix_h);
+ mask = double_pixmap (dpy, bst->xgwa.visual, 1, mask, pix_w, pix_h);
+ pix_w *= 2;
+ pix_h *= 2;
+ }
+ }
+# endif
+
+ char_width = (bst->font->per_char
+ ? bst->font->per_char['n'-bst->font->min_char_or_byte2].width
+ : bst->font->min_bounds.width);
+
+ bst->pixmap = pixmap;
+ bst->mask = mask;
bst->scroll_p = True;
bst->wrap_p = True;
@@ -3224,8 +3296,14 @@ sparc_solaris (Display *dpy, Window window)
bst->top_margin = bst->bottom_margin = bst->xgwa.height * 0.07;
bst->y = bst->top_margin + bst->yoff + bst->font->ascent;
+# if 0
+ /* This looks correct if we have a desktop image behind it, but doesn't
+ make sense if it's a photo. So let's skip it. */
BSOD_IMG (bst);
BSOD_PAUSE (bst, 3000000);
+# endif
+
+ BSOD_LINE_DELAY (bst, 20000);
BSOD_INVERT(bst);
BSOD_RECT (bst, True,
@@ -3260,30 +3338,359 @@ sparc_solaris (Display *dpy, Window window)
" 100131480 10012a6e0 0\n"
"End traceback...\n"
"panic[cpu0]/thread=30000953a20: trap\n"
- "syncing file systems...");
+ "syncing file systems...\033");
BSOD_PAUSE (bst, 3000000);
- BSOD_TEXT (bst, LEFT, " 1 done\n");
- BSOD_TEXT (bst, LEFT, "dumping to /dev/dsk/c0t0d0s3, offset 26935296\n");
+ BSOD_TEXT (bst, LEFT, "\b 1 done\n");
+ BSOD_TEXT (bst, LEFT, "dumping to /dev/dsk/c0t0d0s3, offset 26935296\n\033");
BSOD_PAUSE (bst, 2000000);
-
+ BSOD_TEXT (bst, LEFT, "\b");
for (i = 1; i <= 100; ++i)
{
char buf[100];
- sprintf (buf, "\b\b\b\b\b\b\b\b\b\b\b%3d%% done", i);
+ sprintf (buf, "\r %3d%% done\033", i);
BSOD_TEXT (bst, LEFT, buf);
BSOD_PAUSE (bst, 100000);
}
BSOD_TEXT (bst, LEFT,
- ": 2803 pages dumped, compression ratio 2.88, dump succeeded\n");
+ "\b: 2803 pages dumped, compression ratio 2.88, dump succeeded\n\033");
BSOD_PAUSE (bst, 2000000);
BSOD_TEXT (bst, LEFT,
- "rebooting...\n"
- "Resetting ...");
+ "\brebooting...\n"
+ "Resetting ...\n\033");
+
+ BSOD_PAUSE (bst, 3000000);
+
+ BSOD_INVERT(bst);
+ BSOD_RECT (bst, True,
+ bst->left_margin, bst->top_margin,
+ bst->xgwa.width - bst->left_margin - bst->right_margin,
+ bst->xgwa.height - bst->top_margin - bst->bottom_margin);
+ BSOD_INVERT(bst);
+ BSOD_MOVETO (bst, bst->left_margin, bst->top_margin + bst->font->ascent);
+ BSOD_PAUSE (bst, 1000000);
+
+ BSOD_TEXT (bst, LEFT,
+ "Starting real time clock...\n"
+ "Probing /sbus@1,f8000000 at 0,0 dma esp sd st le\n"
+ "Probing /sbus@1,f8000000 at 1,0 Invalid FCode start byte at ffe70000\n"
+ "Probing /sbus@1,f8000000 at 2,0 Invalid FCode start byte at ffe70000\n"
+ "Probing /sbus@1,f8000000 at 3,0 bwtwo\n"
+ "\n");
+
+ BSOD_PIXMAP (bst, 0, 0, pix_w, pix_h, ~0, ~0);
+ BSOD_MARGINS (bst,
+ bst->left_margin + char_width * 12,
+ bst->top_margin);
+ BSOD_TEXT (bst, LEFT,
+ "SPARCstation IPC, Keyboard Present\n"
+ "ROM Rev. 2.9, 16 MB memory installed, Serial #12648190.\n"
+ "Ethernet address 8:0:20:37:1:87, Host ID: 52c0fefe.\n");
+ BSOD_MARGINS (bst, bst->left_margin, bst->top_margin);
+
+ BSOD_TEXT (bst, LEFT, "\n\n\033");
+ BSOD_PAUSE (bst, 3000000);
+ BSOD_TEXT (bst, LEFT, "\r");
+
+ BSOD_TEXT (bst, LEFT, "Testing 16 megs of memory. Still to go \033 16");
+
+ for (i = 16; i > 0; i--)
+ {
+ char buf[100];
+ sprintf (buf, "\b\b%2d", i);
+ BSOD_TEXT (bst, LEFT, buf);
+ BSOD_PAUSE (bst, 100000);
+ }
+ BSOD_TEXT (bst, LEFT, "\b\b\b\b 0\n"
+ "Initializing 16 megs of memory at addr 0\033 16");
+ for (i = 16; i >= 0; i--)
+ {
+ char buf[100];
+ sprintf (buf, "\b\b%2d", i);
+ BSOD_TEXT (bst, LEFT, buf);
+ BSOD_PAUSE (bst, 30000);
+ }
+ BSOD_TEXT (bst, LEFT, "\r"
+ " \r"
+ "Boot device: /sbus/le@0,c00000 File and args:\n\033");
+
+ {
+ int n = (random() % 10);
+ for (i = 0; i < n; i++)
+ {
+ BSOD_PAUSE (bst, 3000000);
+ BSOD_TEXT (bst, LEFT, "\rTimeout waiting for ARP/RARP packet\n\033");
+ }
+ }
+ BSOD_TEXT (bst, LEFT, "\r");
+
+ BSOD_TEXT (bst, LEFT,
+ "Internal loopback test -- Wrong packet length;"
+ " expected 36, observed 1600\n"
+ "Can't open boot device\n"
+ "\n"
+ "Type b (boot), c (continue), or n (new command mode)\n"
+ ">");
+ BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 10);
+ BSOD_TEXT (bst, LEFT, "n\n");
+ BSOD_PAUSE (bst, 500000);
+ BSOD_TEXT (bst, LEFT, "Type help for more information\n"
+ "ok ");
+
+ BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 4);
+ BSOD_CHAR_DELAY (bst, 80000);
+ BSOD_TEXT (bst, LEFT, /* "test net" */
+ "t\033\be\033\bs\033\bt\033\b \033\bn\033\be\033\bt\033\b");
+ BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 2);
+ BSOD_TEXT (bst, LEFT, "\n\033");
+ BSOD_CHAR_DELAY (bst, 0);
+
+ BSOD_PAUSE (bst, 1000000);
+ BSOD_TEXT (bst, LEFT, "\r Lance register test -- succeeded.\n\033");
+ BSOD_PAUSE (bst, 1000000);
+ BSOD_TEXT (bst, LEFT, "\r Internal loopback test -- succeeded.\n\033");
+ BSOD_PAUSE (bst, 1000000);
+ BSOD_TEXT (bst, LEFT, "\r External loopback test -- succeeded.\n"
+ "ok ");
+ BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 8);
+
+ BSOD_TEXT (bst, LEFT, "\rok ");
+ BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 4);
+ BSOD_CHAR_DELAY (bst, 80000);
+ BSOD_TEXT (bst, LEFT, /* "boot cdrom" */
+ "b\033\bo\033\bo\033\bt\033\b \033\bc\033\bd\033\br\033\bo\033\bm\033\b");
+ BSOD_TEXT (bst, LEFT, " \n");
+ BSOD_CHAR_DELAY (bst, 0);
+ BSOD_TEXT (bst, LEFT,
+ "\rBoot device: /sbus/esp@0,800000/sd@6,0:c File and args:\n\033");
+ BSOD_PAUSE (bst, 1000000);
+ BSOD_TEXT (bst, LEFT,
+ "\rroot on fstype 4.3\n"
+ "Boot: vmunix\n\033");
+
+ BSOD_TEXT (bst, LEFT, "\rSize: 696320+");
+ BSOD_CHAR_DELAY (bst, 5000);
+ BSOD_INVERT(bst);
+ BSOD_TEXT (bst, LEFT, /* spinner */
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+ "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/");
+ BSOD_INVERT(bst);
+ BSOD_TEXT (bst, LEFT, "\b+");
+ BSOD_CHAR_DELAY (bst, 0);
+ BSOD_TEXT (bst, LEFT,
+ "2218504+28056 bytes\n\033");
+ BSOD_PAUSE (bst, 1000000);
+
+ i = random() % 3;
+
+ if (i == 0)
+ {
+ BSOD_TEXT (bst, LEFT,
+ "\rSunOS Release 4.1.1 (MUNIX) #1: Thu Oct 11 11:22:48 PDT 1990\n"
+ "Copyright (c) 1983-1990, Sun Microsystems, Inc.\n"
+ "mem = 16384K (0x1000000)\n"
+ "avail mem = 12865536\n"
+ "Ethernet address = 8:0:20:37:1:87\n"
+ "No FPU in configuration\n"
+ "cpu = SUNW,Sun 4/40\n"
+ "zs0 at obio 0xf1000000 pri 12\n"
+ "zs1 at obio 0xf0000000 pri 12\n"
+ "sbus0 at SBus slot 0 0x0\n"
+ "dma0 at SBus slot 0 0x400000\n"
+ "esp0 at SBus slot 0 0x800000 pri 3\n"
+ "\033");
+ }
+ else if (i == 1)
+ {
+ BSOD_TEXT (bst, LEFT,
+ "\rSunOS Release 5.6 Version Generic [UNIX(R) System V Release 4.0]\n"
+ "Copyright (c) 1983-1997, Sun Microsystems, Inc.\n"
+ "No FPU in configuration\n"
+ "WARNING: kbd: Unknown keyboard type, Type 3 assumed.\n"
+ "WARNING: kbd: Unknown keyboard type, Type 3 assumed.\n"
+ "Configuring devices...\n"
+ "\033");
+ BSOD_PAUSE (bst, 1000000);
+ BSOD_TEXT (bst, LEFT,
+ "\rWARNING: /sbus@1,f8000000/esp@0,800000/sd@6,0 (sd6):\n"
+ " incomplete read- retrying\n"
+ "\n"
+ "loadkeys: ioctl(KIOCLAYOUT): Invalid argument\n"
+ "\033");
+ }
+ else
+ {
+ BSOD_TEXT (bst, LEFT,
+ "\rSunOS Release 5.3 Version Generic [UNIX(R) System V Release 4.0]\n"
+ "Copyright (c) 1983-1993, Sun Microsystems, Inc.\n"
+ "No FPU in configuration\n"
+ "WARNING: /sbus@1,f8000000/esp@0,800000/sd@3,0 (sd3):\n"
+ " corrupt label - wrong magic number\n"
+ "\n"
+ "\\ unexpected data phase\n\033");
+ for (i = 0; i < 3; i++)
+ {
+ BSOD_PAUSE (bst, 3000000);
+ if (i > 0)
+ BSOD_TEXT (bst, LEFT,
+ "\r polled command timeout\n");
+ BSOD_TEXT (bst, LEFT,
+ "\resp: State=DATA Last State=UNKNOWN\n"
+ "esp: Latched stat=0x11<XZERO,IO> intr=0x10<BUS,FCMO>"
+ " fifo 0x0\n"
+ "esp: lst msg out: IDENTIFY; lst msg in: COMMAND COMPLETE\n"
+ "esp: DMA csr=0x10<INTEN>\n"
+ "esp: addr=fff0100f dmacnt=8000 last=fff01008 last_cnt=7\n"
+ "esp: Cmd dump for Target 6 Lun 0:\n"
+ "esp: cdblen=6, cdb=[ 0x0 0x0 0x0 0x0 0x1 0x0 ]\n"
+ "esp: pkt_state 0x3<SEL,ARB> pkt_flags 0x10000"
+ " pkt_statistics 0x0\n"
+ "esp: cmd_flags=0x10022 cmd_timeout=120\n"
+ "\033");
+ }
+ BSOD_PAUSE (bst, 3000000);
+ BSOD_TEXT (bst, LEFT,
+ "\rWARNING: /sbus@1,f8000000/esp@0,800000/sd@6,0 (sd6):\n"
+ " incomplete read- retrying\n"
+ "\n"
+ "loadkeys: ioctl(KIOCLAYOUT): Invalid argument\n"
+ "\033");
+ }
+
+ BSOD_PAUSE (bst, 1000000);
+ BSOD_TEXT (bst, LEFT,
+ "\rsd1 at esp0 target 1 lun 0\n"
+ "sd1: corrupt label - wrong magic number\n"
+ "sd1: Vendor ' SEAGAT', product ' ', 786432 512 byte blocks\n"
+ "sr0: Unrecongized vendor 'Sony ',"
+ " product 'CDU-76S 'sr0 at esp0 target 6 lun 0\n"
+ "le0 at SBus slot 0 0xc00000 pri 5\n"
+ "fd0 at obio 0xf7200000 pri 11\n\033");
+ BSOD_PAUSE (bst, 1000000);
+ BSOD_TEXT (bst, LEFT,
+ "\rrd0: using preloaded munixfs\n"
+ "WARNING: TOD clock not initialized -- CHECK AND RESET THE DATE!\n"
+ "root on rd0a fstype 4.2\n"
+ "swap on ns0b fstype spec size 12480K\n"
+ "dump on ns0b fstype spec size 12468K\n"
+ "\033");
+ BSOD_PAUSE (bst, 4000000);
+
+ i = random() % 3;
+
+ if (i == 0)
+ {
+ BSOD_TEXT (bst, LEFT,
+ "\rStarting OpenWindows...\n"
+ "\n"
+ "\n"
+ "waiting for X server to begin accepting connections \033");
+ BSOD_PAUSE (bst, 2500000);
+ BSOD_TEXT (bst, LEFT, "\b.\033");
+ BSOD_PAUSE (bst, 2500000);
+ BSOD_TEXT (bst, LEFT, "\b \n.\033");
+ for (i = 0; i < 10; i++)
+ {
+ BSOD_PAUSE (bst, 2500000);
+ BSOD_TEXT (bst, LEFT, "\b.\033");
+ BSOD_PAUSE (bst, 2500000);
+ BSOD_TEXT (bst, LEFT, "\b \n.\033");
+ }
+ }
+ else if (i == 1)
+ {
+ BSOD_TEXT (bst, LEFT,
+ "\rCan't invoke /sbin/init, error 13\n"
+ "Can't invoke /etc/init, error 13\n"
+ "Can't invoke /bin/init, error 13\n"
+ "Can't invoke /usr/etc/init, error 13\n"
+ "Can't invoke /usr/bin/init, error 13\n"
+ "panic: icode\n"
+ "syncing file systems...\033");
+ BSOD_PAUSE (bst, 2000000);
+ BSOD_TEXT (bst, LEFT, "\b done\n");
+ BSOD_TEXT (bst, LEFT,
+ "00000 low-memory static kernel pages\n"
+ "00888 additional static and sysmap kernel pages\n"
+ "00000 dynamic kernel data pages\n"
+ "00008 additional user structure pages\n"
+ "00000 segmap kernel pages\n"
+ "00000 segvn kernel pages\n"
+ "00000 current user process pages\n"
+ "00000 user stack pages\n"
+ "00896 total pages (896 chunks)\n"
+ "\n"
+ "dumping to vp ff007dd4, offset 17768\n"
+ "0 total pages, dump failed: error 19\n"
+ "rebooting...\n");
+ }
+ else
+ {
+ BSOD_TEXT (bst, LEFT,
+ "\r \n"
+ "What would you like to do?\n"
+ " 1 - install SunOS mini-root\n"
+ " 2 - exit to single user shell\n"
+ "Enter a 1 or 2: ");
+ BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 4);
+ BSOD_TEXT (bst, LEFT,
+ "2\n"
+ "you may restart this script by typing <cntl-D>\n# ");
+ BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 4);
+ BSOD_CHAR_DELAY (bst, 80000);
+ BSOD_TEXT (bst, LEFT, "l\033\bs\033\b");
+ BSOD_TEXT (bst, LEFT, " \n");
+ BSOD_CHAR_DELAY (bst, 0);
+ BSOD_TEXT (bst, LEFT,
+ ".MUNIXFS bin extract stand\n"
+ ".profile dev lib tmp\n"
+ "README etc sbin usr\n"
+ "# ");
+ BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 4);
+ BSOD_CHAR_DELAY (bst, 80000);
+ BSOD_TEXT (bst, LEFT, /* ". extract" */
+ ".\033\b \033\be\033\bx\033\bt\033\br\033\ba\033\bc\033\bt\033\b");
+ BSOD_TEXT (bst, LEFT, " \n");
+ BSOD_CHAR_DELAY (bst, 0);
+ BSOD_TEXT (bst, LEFT,
+ "using cdrom partition number 2\n"
+ "esp0: data transfer overrun\n"
+ " State=DATA Last State=DATA_DNE\n"
+ " Latched stat=0x11<XZERO,IO> intr=0x10<BUS> fifo 0x0\n"
+ " lst msg out: EXTENDED; lst msg in: COMMAND COMPLETE\n"
+ " DMA csr=0x10<INTEN>\n"
+ " addr=fff026d0 last=fff024d0 last_count=200\n"
+ " Cmd dump for Target 6 Lun 0:\n"
+ " cdb=[ 0x8 0x0 0x0 0x0 0x1 0x0 ]\n"
+ " pkt_state 0xf<XFER,CMD,SEL,ARB> pkt_flags 0x0"
+ " pkt_statistics 0x0\n"
+ " Mapped Dma Space:\n"
+ " Base = 0x24d0 Count = 0x200\n"
+ " Transfer History:\n"
+ " Base = 0x24d0 Count = 0x200\n");
+ }
+
+ BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 8);
+
+ XClearWindow(dpy, window);
return bst;
}
@@ -5023,6 +5430,122 @@ apple2ransomware (Display *dpy, Window window)
+static void
+a2controller_encom (apple2_sim_t *sim, int *stepno,
+ double *next_actiontime)
+{
+ apple2_state_t *st=sim->st;
+
+ struct mydata {
+ const char *str;
+ Bool bold_p;
+ } *mine;
+
+ if (!sim->controller_data)
+ sim->controller_data = calloc(sizeof(struct mydata),1);
+ mine=(struct mydata *) sim->controller_data;
+
+ switch(*stepno) {
+ case 0:
+
+ st->gr_mode |= A2_GR_FULL;
+ a2_cls(st);
+ a2_goto(st,0,35);
+ a2_prints(st, "ENCOM");
+ a2_goto(st,23,0);
+ *stepno = 10;
+ *next_actiontime += 6;
+ break;
+
+ case 10:
+ a2_cls(st);
+ a2_goto(st,0,0);
+ *stepno = 11;
+ *next_actiontime += 1;
+ break;
+
+ case 11:
+ a2_goto(st, 1, 0);
+ *stepno = 12;
+ mine->str = ("\n"
+ "\r\n"
+ "\r\n"
+ "\r\n"
+ "\r\n"
+ "\r\n"
+ "\r\n"
+ "\r\n"
+ "\r\n"
+ "SEPT 22, 18:32:21 PM\n"
+ "\n"
+ " YOUR ACCESS SUSPENDED\n"
+ " PLEASE REPORT TO DILLINGER\n"
+ " IMMEDIATELY\n"
+ " AUTHORIZATION: MASTER CONTROL\n"
+ " PROGRAM\n"
+ "\n"
+ "\r\r\r\r\r"
+ " END OF LINE\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n");
+ break;
+
+ case 12:
+ {
+ char c = *mine->str;
+ mine->str++;
+
+ if (c == 0)
+ {
+ *next_actiontime += 30;
+ *stepno = 0;
+ }
+ else
+ {
+ if (c == '\r')
+ *next_actiontime += 0.2;
+ if (mine->bold_p)
+ c |= 0xC0;
+ a2_printc_noscroll(st, c);
+ }
+ }
+ break;
+
+ case A2CONTROLLER_FREE:
+ return;
+ }
+}
+
+
+static int
+a2_encom_draw (struct bsod_state *bst)
+{
+ apple2_sim_t *sim = (apple2_sim_t *) bst->closure;
+ if (! sim) {
+ sim = apple2_start (bst->dpy, bst->window, 9999999,
+ a2controller_encom);
+ bst->closure = sim;
+ }
+
+ if (! apple2_one_frame (sim)) {
+ bst->closure = 0;
+ }
+
+ return 10000;
+}
+
+static struct bsod_state *
+encom (Display *dpy, Window window)
+{
+ struct bsod_state *bst = make_bsod_state (dpy, window, "encom", "Encom");
+ bst->draw_cb = a2_encom_draw;
+ bst->free_cb = a2_free;
+ return bst;
+}
+
+
/* A crash spotted on a cash machine circa 2006, by jwz. I didn't note
what model it was; probably a Tranax Mini-Bank 1000 or similar vintage.
*/
@@ -5080,6 +5603,56 @@ atm (Display *dpy, Window window)
}
+static struct bsod_state *
+dvd (Display *dpy, Window window)
+{
+ struct bsod_state *bst = make_bsod_state (dpy, window, "dvd", "DVD");
+ int pix_w, pix_h;
+ float scale = 0.15;
+ Pixmap mask = 0;
+ Pixmap pixmap = image_data_to_pixmap (dpy, window,
+ dvd_png, sizeof(dvd_png),
+ &pix_w, &pix_h, &mask);
+ int i = 0;
+ int x, y, dx, dy;
+ int steps = 10000;
+
+ XClearWindow (dpy, window);
+
+ while (pix_w <= bst->xgwa.width * scale &&
+ pix_h <= bst->xgwa.height * scale)
+ {
+ pixmap = double_pixmap (dpy, bst->xgwa.visual, bst->xgwa.depth,
+ pixmap, pix_w, pix_h);
+ mask = double_pixmap (dpy, bst->xgwa.visual, 1, mask, pix_w, pix_h);
+ pix_w *= 2;
+ pix_h *= 2;
+ i++;
+ }
+
+ bst->pixmap = pixmap;
+ bst->mask = mask;
+ x = random() % (bst->xgwa.width - pix_w);
+ y = random() % (bst->xgwa.height - pix_h);
+ dx = random() & 1 ? 1 : -1;
+ dy = random() & 1 ? 1 : -1;
+
+ BSOD_INVERT(bst);
+ for (i = 0; i < steps; i++)
+ {
+ BSOD_RECT (bst, True, x, y, pix_w, pix_h);
+ if (x + dx < 0 || x + dx + pix_w > bst->xgwa.width) dx = -dx;
+ if (y + dy < 0 || y + dy + pix_h > bst->xgwa.height) dy = -dy;
+ x += dx;
+ y += dy;
+ BSOD_PIXMAP (bst, 0, 0, pix_w, pix_h, x, y);
+ BSOD_PAUSE (bst, 1000000 / 30.0);
+ }
+
+ return bst;
+}
+
+
/* An Android phone boot loader, by jwz.
*/
static struct bsod_state *
@@ -5355,6 +5928,8 @@ static const struct {
{ "GLaDOS", glados },
{ "Android", android },
{ "VMware", vmware },
+ { "Encom", encom },
+ { "DVD", dvd },
};
@@ -5385,6 +5960,7 @@ hack_title (struct driver_state *dst)
XStoreName (dst->bst->dpy, dst->bst->window, nname);
free (nname);
}
+ if (oname) free (oname);
# endif /* !HAVE_JWXYZ */
}
@@ -5673,6 +6249,8 @@ static const char *bsod_defaults [] = {
"*doGLaDOS: True",
"*doAndroid: True",
"*doVMware: True",
+ "*doEncom: True",
+ "*doDVD: True",
".foreground: White",
".background: Black",
@@ -6000,6 +6578,10 @@ static const XrmOptionDescRec bsod_options [] = {
{ "-no-android", ".doAndroid", XrmoptionNoArg, "False" },
{ "-vmware", ".doVMware", XrmoptionNoArg, "True" },
{ "-no-vmware", ".doVMware", XrmoptionNoArg, "False" },
+ { "-encom", ".doEncom", XrmoptionNoArg, "True" },
+ { "-no-encom", ".doEncom", XrmoptionNoArg, "False" },
+ { "-dvd", ".doDVD", XrmoptionNoArg, "True" },
+ { "-no-dvd", ".doDVD", XrmoptionNoArg, "False" },
ANALOGTV_OPTIONS
{ 0, 0, 0, 0 }
};
diff --git a/hacks/bubbles.c b/hacks/bubbles.c
index 9cb2678..eefe048 100644
--- a/hacks/bubbles.c
+++ b/hacks/bubbles.c
@@ -129,7 +129,7 @@ struct state {
#ifdef FANCY_BUBBLES
int num_bubble_pixmaps;
- Bubble_Step **step_pixmaps;
+ Bubble_Step **step_pixmaps, **def_list;
#endif
Bool simple;
@@ -1214,6 +1214,8 @@ default_to_pixmaps (struct state *st)
init_default_bubbles();
+ st->def_list = (Bubble_Step **)xmalloc((num_default_bubbles + 1) *
+ sizeof(Bubble_Step *));
for (i = 0; i < num_default_bubbles; i++) {
newpix = (Bubble_Step *)xmalloc(sizeof(Bubble_Step));
make_pixmap_from_default(st,
@@ -1221,6 +1223,7 @@ default_to_pixmaps (struct state *st)
default_bubbles[i].size,
newpix);
/* Now add to list */
+ st->def_list[i] = newpix;
if (pixmap_list == (Bubble_Step *)NULL) {
pixmap_list = newpix;
} else {
@@ -1278,6 +1281,8 @@ get_resources(struct state *st)
else
fprintf (stderr, "%s: bogus mode: \"%s\"\n", progname, s);
+ if (s) free (s);
+
st->trails = get_boolean_resource(st->dpy, "trails", "Boolean");
st->drop_dir = (st->drop ? 1 : -1);
if (st->drop || rise)
@@ -1428,9 +1433,38 @@ bubbles_event (Display *dpy, Window window, void *closure, XEvent *event)
}
static void
+free_bubble (Display *dpy, Bubble_Step *b)
+{
+ if (b->ball) XFreePixmap (dpy, b->ball);
+ if (b->shape_mask) XFreePixmap (dpy, b->shape_mask);
+ if (b->draw_gc) XFreeGC (dpy, b->draw_gc);
+ if (b->erase_gc) XFreeGC (dpy, b->erase_gc);
+ free (b);
+}
+
+static void
bubbles_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ int i;
+
+ /* #### The lifetime of objects in this program is fucking incomprehensible.
+ I give up. */
+
+ /* for (i = 0; i < num_default_bubbles; i++)
+ free_bubble (dpy, st->def_list[i]); */
+ for (i = 0; i < st->num_bubble_pixmaps; i++)
+ free_bubble (dpy, st->step_pixmaps[i]);
+ for (i = 0; i < st->mesh_cells; i++)
+ free (st->adjacent_list[i]);
+ /* for (i = 0; i < st->mesh_cells; i++)
+ free_bubble (dpy, st->mesh[i]); */
+ if (st->draw_gc) XFreeGC (dpy, st->draw_gc);
+ if (st->erase_gc) XFreeGC (dpy, st->erase_gc);
+ free (st->adjacent_list);
+ free (st->def_list);
+ free (st->step_pixmaps);
+ free (st->mesh);
free (st);
}
diff --git a/hacks/bumps.c b/hacks/bumps.c
index fa728e6..d24ce00 100644
--- a/hacks/bumps.c
+++ b/hacks/bumps.c
@@ -376,6 +376,8 @@ static void SetPalette(Display *dpy, SBumps *pBumps, XWindowAttributes *pXWinAtt
#endif /* VERBOSE */
XSetWindowBackground( pBumps->dpy, pBumps->Win, pBumps->aColors[ 0 ] );
+
+ if (sColor) free (sColor);
}
@@ -418,6 +420,7 @@ static void InitBumpMap_2(Display *dpy, SBumps *pBumps)
XClearWindow (pBumps->dpy, pBumps->Win);
XSync (pBumps->dpy, 0);
+ if (pBumps->aBumpMap) free (pBumps->aBumpMap);
pBumps->aBumpMap = malloc( pBumps->iWinWidth * pBumps->iWinHeight * sizeof(uint16_t) );
nSoften = get_integer_resource(dpy, "soften", "Integer" );
@@ -606,9 +609,12 @@ static void DestroySpotLight( SSpotLight *pSpotLight ) { free( pSpotLight->aLigh
static void DestroyBumps( SBumps *pBumps )
{
DestroySpotLight( &pBumps->SpotLight );
+ free (pBumps->xColors);
free( pBumps->aColors );
free( pBumps->aBumpMap );
destroy_xshm_image( pBumps->dpy, pBumps->pXImage, &pBumps->XShmInfo );
+ XFreeGC (pBumps->dpy, pBumps->GraphicsContext);
+ free(pBumps);
}
diff --git a/hacks/ccurve.c b/hacks/ccurve.c
index 23b53e8..a4423b2 100644
--- a/hacks/ccurve.c
+++ b/hacks/ccurve.c
@@ -733,6 +733,7 @@ ccurve_draw (Display *dpy, Window window, void *closure)
{
st->draw_segment_count
= lengths [random () % (sizeof (lengths) / sizeof (int))];
+ if (st->draw_segments) free (st->draw_segments);
st->draw_segments
= (Segment*)(malloc ((st->draw_segment_count) * sizeof (Segment)));
select_pattern (st->draw_segment_count, st->draw_segments);
@@ -839,6 +840,10 @@ ccurve_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
ccurve_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->context);
+ if (st->draw_segments) free (st->draw_segments);
+ free (st);
}
diff --git a/hacks/celtic.c b/hacks/celtic.c
index 890b398..232adb6 100644
--- a/hacks/celtic.c
+++ b/hacks/celtic.c
@@ -911,6 +911,7 @@ celtic_init (Display *d_arg, Window w_arg)
XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+ if (st->colors) free (st->colors);
assert(st->colors = (XColor *) calloc (st->ncolors,sizeof(XColor)));
if (get_boolean_resource(st->dpy, "mono", "Boolean"))
@@ -983,7 +984,8 @@ celtic_draw (Display *dpy, Window window, void *closure)
pattern_del(st->pattern);
}
st->pattern = NULL;
- graph_del(st->graph);
+ if (st->graph) graph_del(st->graph);
+ st->graph = NULL;
/* recolor each time */
st->ncolors = get_integer_resource (st->dpy, "ncolors", "Integer");
@@ -1124,6 +1126,13 @@ static void
celtic_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->gc);
+ XFreeGC (dpy, st->shadow_gc);
+ XFreeGC (dpy, st->gc_graph);
+ if (st->pattern) pattern_del (st->pattern);
+ st->pattern = 0;
+ if (st->graph) graph_del (st->graph);
+ if (st->eraser) eraser_free (st->eraser);
free (st);
}
diff --git a/hacks/check-configs.pl b/hacks/check-configs.pl
index 7a7d0bb..7cc60b4 100755
--- a/hacks/check-configs.pl
+++ b/hacks/check-configs.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# Copyright © 2008-2017 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2008-2018 Jamie Zawinski <jwz@jwz.org>
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
@@ -21,7 +21,7 @@ use diagnostics;
use strict;
my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.26 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.28 $' =~ m/\s(\d[.\d]+)\s/s);
my $verbose = 0;
my $debug_p = 0;
@@ -997,17 +997,17 @@ sub build_android(@) {
$write_files{"$xml_dir/${saver_underscore}_wallpaper.xml"} = $wallpaper;
$daydream_java .=
- (" public static class $saver_class extends org.jwz.xscreensaver.Daydream {\n" .
+ (" public static class $saver_class extends $package.Daydream {\n" .
" }\n" .
"\n");
$wallpaper_java .=
- (" public static class $saver_class extends org.jwz.xscreensaver.Wallpaper {\n" .
+ (" public static class $saver_class extends $package.Wallpaper {\n" .
" }\n" .
"\n");
$settings_java .=
- (" public static class $saver_class extends org.jwz.xscreensaver.Settings\n" .
+ (" public static class $saver_class extends $package.Settings\n" .
" implements SharedPreferences.OnSharedPreferenceChangeListener {\n" .
" }\n" .
"\n");
@@ -1035,7 +1035,7 @@ sub build_android(@) {
$manifest .= "<activity android:name=\"$package.Settings\" />\n";
$manifest .= ("<activity android:name=\"" .
- "org.jwz.xscreensaver.Activity\"\n" .
+ "$package.Activity\"\n" .
" android:theme=\"\@android:style/Theme.Holo\"\n" .
" android:label=\"\@string/app_name\">\n" .
" <intent-filter>\n" .
@@ -1056,7 +1056,7 @@ sub build_android(@) {
$manifest .= ("<activity android:name=\"" .
- "org.jwz.xscreensaver.TVActivity\"\n" .
+ "$package.TVActivity\"\n" .
" android:theme=\"\@android:style/Theme.Holo\"\n" .
" android:label=\"\@string/app_name\">\n" .
" <intent-filter>\n" .
@@ -1091,7 +1091,7 @@ sub build_android(@) {
" android:versionCode=\"$versb\"\n" .
" android:versionName=\"$vers\">\n" .
- " <uses-sdk android:minSdkVersion=\"14\"" .
+ " <uses-sdk android:minSdkVersion=\"16\"" .
" android:targetSdkVersion=\"19\" />\n" .
" <uses-feature android:glEsVersion=\"0x00010001\"\n" .
@@ -1117,23 +1117,23 @@ sub build_android(@) {
" </application>\n" .
"</manifest>\n");
- $daydream_java = ("package org.jwz.xscreensaver.gen;\n" .
+ $daydream_java = ("package $package.gen;\n" .
"\n" .
- "import org.jwz.xscreensaver.jwxyz;\n" .
+ "import $package.jwxyz;\n" .
"\n" .
"public class Daydream {\n" .
$daydream_java .
"}\n");
- $wallpaper_java = ("package org.jwz.xscreensaver.gen;\n" .
+ $wallpaper_java = ("package $package.gen;\n" .
"\n" .
- "import org.jwz.xscreensaver.jwxyz;\n" .
+ "import $package.jwxyz;\n" .
"\n" .
"public class Wallpaper {\n" .
$wallpaper_java .
"}\n");
- $settings_java = ("package org.jwz.xscreensaver.gen;\n" .
+ $settings_java = ("package $package.gen;\n" .
"\n" .
"import android.content.SharedPreferences;\n" .
"\n" .
diff --git a/hacks/cloudlife.c b/hacks/cloudlife.c
index 4b65f9e..123dd13 100644
--- a/hacks/cloudlife.c
+++ b/hacks/cloudlife.c
@@ -382,6 +382,11 @@ cloudlife_event (Display *dpy, Window window, void *closure, XEvent *event)
{
XClearWindow (dpy, window);
st->cycles = 0;
+ if (st->field) {
+ free (st->field->cells);
+ free (st->field->new_cells);
+ free (st->field);
+ }
st->field = init_field(st);
return True;
}
@@ -392,6 +397,12 @@ static void
cloudlife_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ free (st->field->cells);
+ free (st->field->new_cells);
+ free (st->field);
+ free (st->colors);
+ XFreeGC (dpy, st->fgc);
+ XFreeGC (dpy, st->bgc);
free (st);
}
diff --git a/hacks/compass.c b/hacks/compass.c
index 1dc1d3e..1678ca9 100644
--- a/hacks/compass.c
+++ b/hacks/compass.c
@@ -957,6 +957,18 @@ compass_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
compass_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ int i;
+ XFreeGC (dpy, st->ptr_gc);
+ XFreeGC (dpy, st->erase_gc);
+ for (i = 0; i < 4; i++)
+ if (st->discs[i]) {
+ XFreeGC (dpy, st->discs[i]->gc);
+ free (st->discs[i]);
+ }
+ if (st->ba) XFreePixmap (dpy, st->ba);
+ if (st->bb) XFreePixmap (dpy, st->bb);
+ free (st);
}
diff --git a/hacks/compile_axp.com b/hacks/compile_axp.com
index c50e0f9..9fab007 100644
--- a/hacks/compile_axp.com
+++ b/hacks/compile_axp.com
@@ -1,5 +1,6 @@
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ABSTRACTILE.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV-CLI.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMONE.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMOTAXIS.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANT.C
diff --git a/hacks/compile_decc.com b/hacks/compile_decc.com
index c50e0f9..9fab007 100644
--- a/hacks/compile_decc.com
+++ b/hacks/compile_decc.com
@@ -1,5 +1,6 @@
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ABSTRACTILE.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV-CLI.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMONE.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMOTAXIS.C
$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANT.C
diff --git a/hacks/config/README b/hacks/config/README
index 9771a89..5981463 100644
--- a/hacks/config/README
+++ b/hacks/config/README
@@ -4,8 +4,8 @@
a screen saver and locker for the X window system
by Jamie Zawinski
- version 5.40
- 12-Aug-2018
+ version 5.42
+ 28-Dec-2018
https://www.jwz.org/xscreensaver/
diff --git a/hacks/config/bsod.xml b/hacks/config/bsod.xml
index ef18e21..0d18218 100644
--- a/hacks/config/bsod.xml
+++ b/hacks/config/bsod.xml
@@ -40,12 +40,14 @@
<boolean id="atari" _label="Atari" arg-set="-atari"/>
<boolean id="macx" _label="MacOS X" arg-unset="-no-macx"/>
<boolean id="os390" _label="OS/390" arg-unset="-no-os390"/>
+ <boolean id="encom" _label="Encom" arg-unset="-no-encom"/>
</vgroup>
<vgroup>
<boolean id="vms" _label="VMS" arg-unset="-no-vms"/>
<boolean id="hvx" _label="HVX/GCOS6" arg-unset="-no-hvx"/>
<boolean id="blitdamage" _label="NCD X Terminal " arg-unset="-no-blitdamage"/>
<boolean id="atm" _label="ATM" arg-unset="-no-atm"/>
+ <boolean id="dvd" _label="DVD" arg-unset="-no-dvd"/>
</vgroup>
<vgroup>
<boolean id="bsd" _label="BSD" arg-set="-bsd"/>
diff --git a/hacks/config/handsy.xml b/hacks/config/handsy.xml
new file mode 100644
index 0000000..2ff9608
--- /dev/null
+++ b/hacks/config/handsy.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="handsy" _label="Handsy" gl="yes">
+
+ <command arg="-root"/>
+
+ <video href="https://www.youtube.com/watch?v=awI8EawYTdE"/>
+
+ <hgroup>
+ <vgroup>
+ <number id="delay" type="slider" arg="-delay %"
+ _label="Frame rate" _low-label="Low" _high-label="High"
+ low="0" high="100000" default="30000"
+ convert="invert"/>
+
+ <number id="speed" type="slider" arg="-speed %"
+ _label="Speed" _low-label="Slow" _high-label="Fast"
+ low="0.05" high="2.0" default="1.0"/>
+
+ <number id="count" type="slider" arg="-count %"
+ _label="Number of hands" _low-label="Two" _high-label="Many"
+ low="2" high="32" default="2"/>
+ </vgroup>
+
+ <vgroup>
+
+ <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
+ <select id="rotation">
+ <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
+ <option id="z" _label="Rotate around Z axis" arg-set="-spin Z"/>
+ <option id="xy" _label="Rotate around X and Y axes"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="xyz" _label="Rotate around all three axes" arg-set="-spin XYZ"/>
+ </select>
+
+ <select id="facing">
+ <option id="front" _label="Always face front"/>
+ <option id="nofront" _label="Spin all the way around" arg-set="-no-front"/>
+ </select>
+
+ <hgroup>
+ <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ </hgroup>
+
+ <xscreensaver-updater />
+ </vgroup>
+ </hgroup>
+
+ <_description>
+A set of robotic hands communicate non-verbally.
+
+Written by Jamie Zawinski; 2018.
+ </_description>
+</screensaver>
diff --git a/hacks/config/ripples.xml b/hacks/config/ripples.xml
index 191e041..8a2e1be 100644
--- a/hacks/config/ripples.xml
+++ b/hacks/config/ripples.xml
@@ -24,8 +24,7 @@
<number id="fluidity" type="slider" arg="-fluidity %"
_label="Fluidity" _low-label="Small drops" _high-label="Big drops"
- low="0" high="16" default="6"
- convert="invert"/>
+ low="0" high="16" default="6"/>
</vgroup>
<vgroup>
diff --git a/hacks/config/unknownpleasures.xml b/hacks/config/unknownpleasures.xml
index 7ef79ac..0730599 100644
--- a/hacks/config/unknownpleasures.xml
+++ b/hacks/config/unknownpleasures.xml
@@ -4,7 +4,7 @@
<command arg="-root"/>
- <video href="https://www.youtube.com/watch?v=vuWhUxBq99E"/>
+ <video href="https://www.youtube.com/watch?v=DEWPiUbwnt0"/>
<hgroup>
<vgroup>
@@ -16,22 +16,31 @@
<number id="count" type="slider" arg="-count %"
_label="Scanlines" _low-label="Few" _high-label="Many"
low="3" high="200" default="80"/>
- </vgroup>
- <vgroup>
<number id="speed" type="slider" arg="-speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
- low="0.1" high="3.0" default="1.0"/>
+ low="0.1" high="20.0" default="1.0"/>
+ </vgroup>
+ <vgroup>
<number id="resolution" type="slider" arg="-resolution %"
_label="Resolution" _low-label="Low" _high-label="High"
low="5" high="300" default="100"/>
+
+ <number id="amplitude" type="slider" arg="-amplitude %"
+ _label="Amplitude" _low-label="Low" _high-label="High"
+ low="0.01" high="0.25" default="0.13"/>
+
+ <number id="noise" type="slider" arg="-noise %"
+ _label="Noise" _low-label="Low" _high-label="High"
+ low="0.0" high="3.0" default="1.0"/>
</vgroup>
</hgroup>
<hgroup>
<boolean id="ortho" _label="Orthographic Projection" arg-unset="-no-ortho"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="buzz" _label="Buzz" arg-set="-buzz"/>
+ <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
<boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
</hgroup>
diff --git a/hacks/coral.c b/hacks/coral.c
index 9cfcf50..f82f9ed 100644
--- a/hacks/coral.c
+++ b/hacks/coral.c
@@ -71,8 +71,10 @@ init_coral(struct state *st)
st->ncolors = 0;
}
gcv.foreground = st->default_fg_pixel = get_pixel_resource(st->dpy, cmap, "foreground", "Foreground");
+ if (st->draw_gc) XFreeGC (st->dpy, st->draw_gc);
st->draw_gc = XCreateGC(st->dpy, st->window, GCForeground, &gcv);
gcv.foreground = get_pixel_resource (st->dpy, cmap, "background", "Background");
+ if (st->erase_gc) XFreeGC (st->dpy, st->erase_gc);
st->erase_gc = XCreateGC (st->dpy, st->window, GCForeground, &gcv);
st->ncolors = NCOLORSMAX;
make_uniform_colormap(xgwa.screen, xgwa.visual, cmap,
@@ -283,6 +285,8 @@ coral_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
free (st->pointbuf);
+ XFreeGC (dpy, st->draw_gc);
+ XFreeGC (dpy, st->erase_gc);
if (st->walkers) free (st->walkers);
if (st->board) free (st->board);
free (st);
diff --git a/hacks/critical.c b/hacks/critical.c
index 81fd0c1..d716fc6 100644
--- a/hacks/critical.c
+++ b/hacks/critical.c
@@ -198,7 +198,7 @@ static void
setup_colormap (struct state *st, XColor **colors, int *n_colors)
{
Bool writable;
- char const * color_scheme;
+ char * color_scheme;
/* Make a colormap */
*n_colors = get_integer_resource (st->dpy, "ncolors", "Integer");
@@ -237,6 +237,7 @@ setup_colormap (struct state *st, XColor **colors, int *n_colors)
*colors, n_colors, True,
&writable, True);
}
+ if (color_scheme) free (color_scheme);
}
@@ -421,6 +422,12 @@ static void
critical_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->fgc);
+ XFreeGC (dpy, st->bgc);
+ free (st->model->cells);
+ free (st->model);
+ free (st->history);
+ free (st->d_colors);
free (st);
}
diff --git a/hacks/cwaves.c b/hacks/cwaves.c
index 20dd80a..b032626 100644
--- a/hacks/cwaves.c
+++ b/hacks/cwaves.c
@@ -182,6 +182,11 @@ cwaves_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
cwaves_free (Display *dpy, Window window, void *closure)
{
+ state *st = (state *) closure;
+ XFreeGC (dpy, st->gc);
+ free (st->colors);
+ free (st->waves);
+ free (st);
}
diff --git a/hacks/cynosure.c b/hacks/cynosure.c
index 8b8b85b..3eaa397 100644
--- a/hacks/cynosure.c
+++ b/hacks/cynosure.c
@@ -409,6 +409,11 @@ static void
cynosure_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->fg_gc);
+ XFreeGC (dpy, st->bg_gc);
+ XFreeGC (dpy, st->shadow_gc);
+ if (st->colors) free (st->colors);
+ if (st->colors2) free (st->colors2);
free (st);
}
diff --git a/hacks/decayscreen.c b/hacks/decayscreen.c
index 8b45af9..6b2a4cb 100644
--- a/hacks/decayscreen.c
+++ b/hacks/decayscreen.c
@@ -122,6 +122,7 @@ decayscreen_init (Display *dpy, Window window)
st->random_p = 1;
st->mode = random() % (FUZZ+1);
}
+ if (s) free (s);
st->delay = get_integer_resource (st->dpy, "delay", "Integer");
if (st->delay < 0) st->delay = 0;
@@ -361,6 +362,7 @@ static void
decayscreen_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->gc);
free (st);
}
diff --git a/hacks/deco.c b/hacks/deco.c
index 876badc..cebed2c 100644
--- a/hacks/deco.c
+++ b/hacks/deco.c
@@ -297,6 +297,8 @@ static void
deco_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->fgc);
+ XFreeGC (dpy, st->bgc);
free (st);
}
diff --git a/hacks/deluxe.c b/hacks/deluxe.c
index 694a982..5fd7eb7 100644
--- a/hacks/deluxe.c
+++ b/hacks/deluxe.c
@@ -423,6 +423,20 @@ deluxe_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
deluxe_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ int i;
+ XFreeGC (dpy, st->erase_gc);
+ if (st->ba) XFreePixmap (dpy, st->ba);
+ if (st->bb) XFreePixmap (dpy, st->bb);
+ if (st->plane_masks) free (st->plane_masks);
+ for (i = 0; i < st->count; i++)
+ if (st->throbbers[i]) {
+ XFreeGC (dpy, st->throbbers[i]->gc);
+ free (st->throbbers[i]);
+ }
+ free (st->throbbers);
+ free (st->colors);
+ free (st);
}
diff --git a/hacks/distort.c b/hacks/distort.c
index ba81279..a3586cf 100644
--- a/hacks/distort.c
+++ b/hacks/distort.c
@@ -74,6 +74,7 @@ struct state {
int ***from;
int ****from_array;
int *fast_from;
+ int from_size;
int bpp_size;
@@ -140,6 +141,7 @@ distort_reset (struct state *st)
;
else if (s && *s)
fprintf(stderr,"%s: bogus effect: %s\n", progname, s);
+ if (s) free (s);
if (st->effect == NULL && st->radius == 0 && st->speed == 0 && st->number == 0
&& !st->blackhole && !st->vortex && !st->magnify && !st->reflect) {
@@ -307,9 +309,11 @@ distort_finish_loading (struct state *st)
XClearWindow (st->dpy, st->window);
XCopyArea (st->dpy, st->pm, st->window, st->gc,
0, 0, st->xgwa.width, st->xgwa.height, 0, 0);
+ if (st->orig_map) XDestroyImage (st->orig_map);
st->orig_map = XGetImage(st->dpy, st->pm, 0, 0,
st->xgwa.width, st->xgwa.height,
~0L, ZPixmap);
+ if (st->buffer_map_cache) free (st->buffer_map_cache);
st->buffer_map_cache = malloc(sizeof(unsigned long)*(2*st->radius+st->speed+2)*(2*st->radius+st->speed+2));
if (st->buffer_map_cache == NULL) {
@@ -317,6 +321,8 @@ distort_finish_loading (struct state *st)
exit(EXIT_FAILURE);
}
+ if (st->buffer_map)
+ destroy_xshm_image (st->dpy, st->buffer_map, &st->shm_info);
st->buffer_map = create_xshm_image(st->dpy, st->xgwa.visual, st->orig_map->depth,
ZPixmap, &st->shm_info,
2*st->radius + st->speed + 2,
@@ -377,6 +383,7 @@ static void convert(struct state *st)
{
int *p;
int i, j;
+ if (st->fast_from) free (st->fast_from);
st->fast_from = calloc(1, sizeof(int)*((st->buffer_map->bytes_per_line/st->bpp_size)*(2*st->radius+st->speed+2) + 2*st->radius+st->speed+2));
if (st->fast_from == NULL) {
perror("distort");
@@ -478,6 +485,17 @@ static void allocate_lense(struct state *st)
* then pointers could be used instead of arrays in some places (and
* maybe give a speedup - maybe also consume less memory)
*/
+ if (st->from) {
+ for (i = 0; i < st->from_size; i++)
+ if (st->from[i]) {
+ for (j = 0; j < st->from_size; j++) {
+ if (st->from[i][j]) free (st->from[i][j]);
+ }
+ free (st->from[i]);
+ }
+ free (st->from);
+ }
+ st->from_size = s;
st->from = (int ***)malloc(s*sizeof(int **));
if (st->from == NULL) {
perror("distort");
@@ -508,6 +526,7 @@ static void init_round_lense(struct state *st)
int k;
if (st->effect == &swamp_thing) {
+ if (st->from_array) free (st->from_array);
st->from_array = (int ****)malloc((st->radius+1)*sizeof(int ***));
for (k=0; k <= st->radius; k++) {
allocate_lense(st);
@@ -796,13 +815,27 @@ static void
distort_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ int i, j;
XFreeGC (st->dpy, st->gc);
if (st->pm) XFreePixmap (dpy, st->pm);
if (st->orig_map) XDestroyImage (st->orig_map);
- if (st->buffer_map) destroy_xshm_image (st->dpy, st->buffer_map, &st->shm_info);
- if (st->from) free (st->from);
+ if (st->buffer_map)
+ destroy_xshm_image (st->dpy, st->buffer_map, &st->shm_info);
if (st->fast_from) free (st->fast_from);
if (st->from_array) free (st->from_array);
+ if (st->buffer_map_cache) free (st->buffer_map_cache);
+
+ if (st->from) {
+ for (i = 0; i < st->from_size; i++)
+ if (st->from[i]) {
+ for (j = 0; j < st->from_size; j++) {
+ if (st->from[i][j]) free (st->from[i][j]);
+ }
+ free (st->from[i]);
+ }
+ free (st->from);
+ }
+
free (st);
}
diff --git a/hacks/epicycle.c b/hacks/epicycle.c
index 89fab0b..a8a257c 100644
--- a/hacks/epicycle.c
+++ b/hacks/epicycle.c
@@ -788,6 +788,10 @@ static void
epicycle_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ if (st->eraser) eraser_free (st->eraser);
+ if (st->pb0) delete_body (st->pb0);
+ XFreeGC (dpy, st->color0);
+ free (st->colors);
free (st);
}
diff --git a/hacks/eruption.c b/hacks/eruption.c
index 629cb8e..3f68cf7 100644
--- a/hacks/eruption.c
+++ b/hacks/eruption.c
@@ -482,15 +482,16 @@ eruption_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
eruption_free (Display *dpy, Window window, void *closure)
{
-#if 0
struct state *st = (struct state *) closure;
- XDestroyImage( st->pImage );
- free( st->aiColorVals );
- for (i = 0; i < st->iWinHeight; ++i)
- free( st->fire[i] );
- free( st->fire );
- free( st->particles );
-#endif
+ int i;
+ XDestroyImage (st->pImage);
+ free (st->aiColorVals);
+ for (i = 0; i < st->iWinHeight; ++i)
+ free (st->fire[i]);
+ free (st->fire);
+ free (st->particles);
+ XFreeGC (dpy, st->gc);
+ free (st);
}
diff --git a/hacks/filmleader.c b/hacks/filmleader.c
index ef021e1..25b64c4 100644
--- a/hacks/filmleader.c
+++ b/hacks/filmleader.c
@@ -53,6 +53,7 @@ filmleader_init (Display *dpy, Window window)
{
struct state *st = (struct state *) calloc (1, sizeof(*st));
XGCValues gcv;
+ char *s;
st->dpy = dpy;
st->window = window;
@@ -105,15 +106,15 @@ filmleader_init (Display *dpy, Window window)
st->xftdraw = XftDrawCreate (dpy, st->pix, st->xgwa.visual,
st->xgwa.colormap);
- st->font = load_xft_font_retry (dpy, screen_number (st->xgwa.screen),
- get_string_resource (dpy, "numberFont",
- "Font"));
- st->font2 = load_xft_font_retry (dpy, screen_number (st->xgwa.screen),
- get_string_resource (dpy, "numberFont2",
- "Font"));
- st->font3 = load_xft_font_retry (dpy, screen_number (st->xgwa.screen),
- get_string_resource (dpy, "numberFont3",
- "Font"));
+ s = get_string_resource (dpy, "numberFont", "Font");
+ st->font = load_xft_font_retry (dpy, screen_number (st->xgwa.screen), s);
+ if (s) free (s);
+ s = get_string_resource (dpy, "numberFont2", "Font");
+ st->font2 = load_xft_font_retry (dpy, screen_number (st->xgwa.screen), s);
+ if (s) free (s);
+ s = get_string_resource (dpy, "numberFont3", "Font");
+ st->font3 = load_xft_font_retry (dpy, screen_number (st->xgwa.screen), s);
+ if (s) free (s);
st->bg = get_pixel_resource (dpy, st->xgwa.colormap,
"textBackground", "Background");
@@ -124,12 +125,15 @@ filmleader_init (Display *dpy, Window window)
st->trace_color = get_pixel_resource (dpy, st->xgwa.colormap,
"traceColor", "Foreground");
- XftColorAllocName (dpy, st->xgwa.visual, st->xgwa.colormap,
- get_string_resource (dpy, "textColor", "Foreground"),
+ s = get_string_resource (dpy, "textColor", "Foreground");
+ XftColorAllocName (dpy, st->xgwa.visual, st->xgwa.colormap, s,
&st->xft_text_color_1);
- XftColorAllocName (dpy, st->xgwa.visual, st->xgwa.colormap,
- get_string_resource (dpy, "textBackground", "Background"),
+ if (s) free (s);
+
+ s = get_string_resource (dpy, "textBackground", "Background");
+ XftColorAllocName (dpy, st->xgwa.visual, st->xgwa.colormap, s,
&st->xft_text_color_2);
+ if (s) free (s);
return st;
}
@@ -512,6 +516,7 @@ filmleader_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
analogtv_release (st->tv);
+ free (st->inp);
XftDrawDestroy (st->xftdraw);
XftColorFree(dpy, st->xgwa.visual, st->xgwa.colormap, &st->xft_text_color_1);
XftColorFree(dpy, st->xgwa.visual, st->xgwa.colormap, &st->xft_text_color_2);
diff --git a/hacks/fireworkx.c b/hacks/fireworkx.c
index faf3745..57ba128 100644
--- a/hacks/fireworkx.c
+++ b/hacks/fireworkx.c
@@ -571,11 +571,13 @@ static void resize(struct state *st)
XSync(st->dpy, 0);
if (st->xim)
{
- if (st->xim->data == (char *)st->palaka2) st->xim->data = NULL;
+ /* if (st->xim->data == (char *)st->palaka2) */
+ st->xim->data = NULL;
XDestroyImage(st->xim);
XSync(st->dpy, 0);
free(st->mem2);
free(st->mem1);
+ st->xim = 0;
}
st->xim = XCreateImage(st->dpy, xwa.visual, xwa.depth, ZPixmap, 0, 0,
st->width, st->height, 8, 0);
@@ -841,6 +843,14 @@ fireworkx_free (Display *dpy, Window window, void *closure)
free(st->mem1);
free(st->fireshell_array->fpix);
free(st->fireshell_array);
+ if (st->xim) {
+ st->xim->data = NULL;
+ XDestroyImage (st->xim);
+ }
+ if (st->light_map) free(st->light_map);
+ if (st->colors) free (st->colors);
+ XFreeGC (dpy, st->gc);
+ free(st);
}
static const char *fireworkx_defaults [] =
diff --git a/hacks/flag.c b/hacks/flag.c
index f12c0bc..ca58ed8 100644
--- a/hacks/flag.c
+++ b/hacks/flag.c
@@ -196,8 +196,9 @@ make_flag_bits(ModeInfo *mi)
char *bitmap_name = get_string_resource (dpy, "bitmap", "Bitmap");
char *text = get_string_resource (dpy, "text", "Text");
-#ifdef HAVE_JWXYZ
- bitmap_name = 0; /* #### always use default */
+#ifdef HAVE_JWXYZ /* always use default */
+ if (bitmap_name) free (bitmap_name);
+ bitmap_name = 0;
#endif
/* If neither a bitmap nor text are specified, randomly select either
@@ -228,6 +229,7 @@ make_flag_bits(ModeInfo *mi)
&width, &height, 0);
if (bitmap)
{
+ if (fp->image) XDestroyImage (fp->image);
fp->image = XGetImage(dpy, bitmap, 0, 0, width, height, ~0L,
ZPixmap);
XFreePixmap(dpy, bitmap);
@@ -256,6 +258,7 @@ make_flag_bits(ModeInfo *mi)
struct utsname uts;
if (uname (&uts) < 0)
{
+ if (text) free (text);
text = strdup("uname() failed");
}
else
@@ -263,6 +266,7 @@ make_flag_bits(ModeInfo *mi)
char *s;
if ((s = strchr(uts.nodename, '.')))
*s = 0;
+ if (text) free (text);
text = (char *) malloc(strlen(uts.nodename) +
strlen(uts.sysname) +
strlen(uts.version) +
@@ -280,11 +284,14 @@ make_flag_bits(ModeInfo *mi)
char *s, buf[255];
while (fgets (buf, sizeof(buf)-1, f)) {
-# define GRAB(S,V) \
- if (strstr(buf, S)) { \
- fgets (buf, sizeof(buf)-1, f); \
- if ((s = strchr (buf, '>'))) V = strdup(s+1); \
- if ((s = strchr (V, '<'))) *s = 0; \
+# define GRAB(S,V) \
+ if (strstr(buf, S)) { \
+ fgets (buf, sizeof(buf)-1, f); \
+ if ((s = strchr (buf, '>'))) { \
+ if (V) free (V); \
+ V = strdup(s+1); \
+ } \
+ if ((s = strchr (V, '<'))) *s = 0; \
}
GRAB ("ProductName", pn)
GRAB ("ProductBuildVersion", pbv)
@@ -298,6 +305,9 @@ make_flag_bits(ModeInfo *mi)
else
sprintf(text, "%s\n%s %s",
uts.nodename, uts.sysname, uts.release);
+ if (pbv) free (pbv);
+ if (pn) free (pn);
+ if (puvv) free (puvv);
}
# else
sprintf(text, "%s\n%s %s",
@@ -305,6 +315,7 @@ make_flag_bits(ModeInfo *mi)
# endif /* special system types */
}
#else /* !HAVE_UNAME */
+ if (text) free (text);
# ifdef VMS
text = strdup(getenv("SYS$NODE"));
# else
@@ -320,8 +331,9 @@ make_flag_bits(ModeInfo *mi)
text2 = strdup(text);
- if (!fn) fn = def_fn;
+ if (!fn) fn = strdup (def_fn);
font = load_font_retry (dpy, fn);
+ free (fn);
memset(&overall, 0, sizeof(overall));
token = text;
@@ -371,10 +383,10 @@ make_flag_bits(ModeInfo *mi)
lines++;
}
free(text2);
- XUnloadFont(dpy, font->fid);
- XFree((XPointer) font);
+ XFreeFont(dpy, font);
XFreeGC(dpy, gc);
+ if (fp->image) XDestroyImage (fp->image);
fp->image = XGetImage(dpy, bitmap, 0, 0, width, height, 1L, XYPixmap);
XFreePixmap(dpy, bitmap);
}
@@ -420,6 +432,7 @@ make_flag_bits(ModeInfo *mi)
int w = flag_width;
int h = flag_height;
int i = 0;
+ if (fp->image) XDestroyImage (fp->image);
fp->image =
XCreateImage(MI_DISPLAY(mi), MI_VISUAL(mi),
1, XYBitmap, 0, /* dpth, fmt, offset */
@@ -543,15 +556,10 @@ draw_flag(ModeInfo * mi)
ENTRYPOINT void
free_flag(ModeInfo * mi)
{
- int screen = MI_SCREEN(mi);
-
- if (flags == NULL)
- return;
-
- if (flags[screen].cache && flags[screen].dbufp)
- XFreePixmap(MI_DISPLAY(mi), flags[screen].cache);
- if (flags[screen].image)
- XDestroyImage(flags[screen].image);
+ flagstruct *fp = &flags[MI_SCREEN(mi)];
+ if (fp->cache && fp->dbufp)
+ XFreePixmap(MI_DISPLAY(mi), fp->cache);
+ if (fp->image) XDestroyImage(fp->image);
}
#ifndef STANDALONE
diff --git a/hacks/flame.c b/hacks/flame.c
index 7b59056..f7e9833 100644
--- a/hacks/flame.c
+++ b/hacks/flame.c
@@ -459,6 +459,8 @@ static void
flame_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->gc);
+ free (st->colors);
free (st);
}
diff --git a/hacks/fluidballs.c b/hacks/fluidballs.c
index 9273082..533ee2d 100644
--- a/hacks/fluidballs.c
+++ b/hacks/fluidballs.c
@@ -800,6 +800,17 @@ static void
fluidballs_free (Display *dpy, Window window, void *closure)
{
b_state *state = (b_state *) closure;
+ XFreeGC (dpy, state->draw_gc);
+ XFreeGC (dpy, state->draw_gc2);
+ XFreeGC (dpy, state->erase_gc);
+ free (state->m);
+ free (state->r);
+ free (state->vx);
+ free (state->vy);
+ free (state->px);
+ free (state->py);
+ free (state->opx);
+ free (state->opy);
free (state);
}
diff --git a/hacks/fontglide.c b/hacks/fontglide.c
index 263393a..df8f498 100644
--- a/hacks/fontglide.c
+++ b/hacks/fontglide.c
@@ -172,9 +172,11 @@ append_font_name(Display *dpy, char *dest, const XFontStruct *font)
int i;
for (i = 0; i != font->n_properties; ++i) {
if (font->properties[i].name == XA_FONT) {
- const char *suffix = XGetAtomName (dpy, font->properties[i].card32);
+ char *suffix = XGetAtomName (dpy, font->properties[i].card32);
+ int L = strlen(suffix);
strcpy(dest, suffix);
- return dest + strlen(suffix);
+ free (suffix);
+ return dest + L;
}
}
@@ -768,6 +770,7 @@ free_word (state *s, word *w)
if (w->text) free (w->text);
if (w->pixmap) XFreePixmap (s->dpy, w->pixmap);
if (w->mask) XFreePixmap (s->dpy, w->mask);
+ free (w);
}
@@ -860,6 +863,7 @@ split_words (state *s, sentence *se)
char *t2 = chars[k];
word *w2 = new_word (s, se, t2, True);
words2[j++] = w2;
+ free (t2);
w2->x = x;
w2->y = y;
@@ -1219,7 +1223,7 @@ populate_sentence (state *s, sentence *se)
y + se->xftfont->ascent + se->xftfont->descent > s->xgwa.height)
{
unread_word (s, w);
- free (w);
+ w = 0;
/* done = True; */
break;
}
@@ -2203,8 +2207,10 @@ fontglide_init (Display *dpy, Window window)
XGetWindowAttributes (s->dpy, s->window, &s->xgwa);
s->font_override = get_string_resource (dpy, "font", "Font");
- if (s->font_override && (!*s->font_override || *s->font_override == '('))
+ if (s->font_override && (!*s->font_override || *s->font_override == '(')) {
+ free (s->font_override);
s->font_override = 0;
+ }
s->charset = get_string_resource (dpy, "fontCharset", "FontCharset");
s->border_width = get_integer_resource (dpy, "fontBorderWidth", "Integer");
@@ -2247,7 +2253,7 @@ fontglide_init (Display *dpy, Window window)
if (s->trails_p) s->dbuf = False; /* don't need it in this case */
{
- const char *ss = get_string_resource (dpy, "mode", "Mode");
+ char *ss = get_string_resource (dpy, "mode", "Mode");
if (!ss || !*ss || !strcasecmp (ss, "random"))
s->mode = ((random() % 2) ? SCROLL : PAGE);
else if (!strcasecmp (ss, "scroll"))
@@ -2262,6 +2268,7 @@ fontglide_init (Display *dpy, Window window)
"%s: `mode' must be `scroll', `page', or `random', not `%s'\n",
progname, ss);
}
+ if (ss) free (ss);
}
if (s->dbuf)
@@ -2410,8 +2417,20 @@ static void
fontglide_free (Display *dpy, Window window, void *closure)
{
state *s = (state *) closure;
+ int i;
+
textclient_close (s->tc);
+// if (s->b && s->b != s->window) XFreePixmap (dpy, s->b);
+// if (s->ba && s->ba != s->b) XFreePixmap (dpy, s->ba);
+ XFreeGC (dpy, s->bg_gc);
+ if (s->charset) free (s->charset);
+ if (s->font_override) free (s->font_override);
+ for (i = 0;i < s->nsentences; i++)
+ if (s->sentences[i])
+ free_sentence (s, s->sentences[i]);
+ free (s->sentences);
+
#ifdef DEBUG
if (s->metrics_xftfont)
XftFontClose (s->dpy, s->metrics_xftfont);
@@ -2424,8 +2443,6 @@ fontglide_free (Display *dpy, Window window, void *closure)
if (s->label_gc) XFreeGC (dpy, s->label_gc);
#endif
- /* #### there's more to free here */
-
free (s);
}
diff --git a/hacks/fuzzyflakes.c b/hacks/fuzzyflakes.c
index 18470bc..7429fa8 100644
--- a/hacks/fuzzyflakes.c
+++ b/hacks/fuzzyflakes.c
@@ -445,6 +445,10 @@ FuzzyFlakesFreeFlake(Flake *flake)
if (flake->DB.bb) XFreePixmap(flake->dpy, flake->DB.bb);
if (flake->DB.ba) XFreePixmap(flake->dpy, flake->DB.ba);
+ XFreeGC (flake->dpy, flake->GCVar);
+ if (flake->Colors.Back) free (flake->Colors.Back);
+ if (flake->Colors.Fore) free (flake->Colors.Fore);
+ if (flake->Colors.Bord) free (flake->Colors.Bord);
}
static void
@@ -607,6 +611,7 @@ fuzzyflakes_free (Display *dpy, Window window, void *closure)
{
Flake *flake = (Flake *) closure;
FuzzyFlakesFreeFlake(flake);
+ free(flake->Flakes);
free(flake);
}
diff --git a/hacks/glx/Makefile.in b/hacks/glx/Makefile.in
index e3fa617..91e4d51 100644
--- a/hacks/glx/Makefile.in
+++ b/hacks/glx/Makefile.in
@@ -132,7 +132,7 @@ SRCS = xscreensaver-gl-helper.c normals.c erase-gl.c fps-gl.c \
raverhoop.c hydrostat.c discoball.c cubetwist.c cubestack.c \
splodesic.c hexstrut.c vigilance.c seccam.c esper.c \
razzledazzle.c ships.c peepers.c crumbler.c quickhull.c \
- maze3d.c
+ maze3d.c handsy.c handsy_model.c
OBJS = xscreensaver-gl-helper.o normals.o erase-gl.o fps-gl.o \
atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \
@@ -179,7 +179,7 @@ OBJS = xscreensaver-gl-helper.o normals.o erase-gl.o fps-gl.o \
raverhoop.o hydrostat.o discoball.o cubetwist.o cubestack.o \
splodesic.o hexstrut.o vigilance.o seccam.o esper.o \
razzledazzle.o ships.o peepers.o crumbler.o quickhull.o \
- maze3d.o
+ maze3d.o handsy.o handsy_model.o
GL_EXES = cage gears moebius pipes sproingies stairs superquadrics \
morph3d rubik atlantis lament bubble3d glplanet pulsar \
@@ -200,7 +200,7 @@ GL_EXES = cage gears moebius pipes sproingies stairs superquadrics \
splitflap dymaxionmap unicrud energystream raverhoop \
hydrostat discoball cubetwist cubestack splodesic \
hexstrut vigilance esper razzledazzle peepers crumbler \
- maze3d
+ maze3d handsy
GLE_EXES = extrusion
SUID_EXES = sonar
GL_UTIL_EXES = xscreensaver-gl-helper
@@ -237,7 +237,7 @@ HDRS = atlantis.h bubble3d.h buildlwo.h e_textures.h \
sproingies.h extrusion.h glschool.h glschool_gl.h \
glschool_alg.h topblock.h involute.h teapot.h sonar.h \
dropshadow.h starwars.h teapot2.h dnapizza.h curlicue.h \
- quickhull.h dymaxionmap-coords.h
+ quickhull.h dymaxionmap-coords.h handsy_anim.h
GL_MEN = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
cubenetic.man dangerball.man engine.man extrusion.man \
flipscreen3d.man gears.man gflux.man \
@@ -266,7 +266,7 @@ GL_MEN = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
unicrud.man energystream.man raverhoop.man hydrostat.man \
discoball.man cubetwist.man cubestack.man splodesic.man \
hexstrut.man vigilance.man esper.man razzledazzle.man \
- peepers.man crumbler.man maze3d.man
+ peepers.man crumbler.man maze3d.man handsy.man
MEN = @GL_MEN@
RETIRED_MEN = glforestfire.man
EXTRAS = README Makefile.in dxf2gl.pl vrml2gl.pl wfront2gl.pl \
@@ -452,7 +452,9 @@ distdepend:: molecules.h
-e 's@ \([^$$]\)@ $$(srcdir)/\1@g' \
-e 's@ $$(srcdir)/\(.*config.h\)@ \1@g' \
-e 's@ $$(HACK_SRC)/\(.*config.h\)@ ../\1@g' \
- -e 's@ $$(srcdir)/\(.*molecules.h\)@ \1@g' ; \
+ -e 's@ $$(srcdir)/\(.*molecules.h\)@ \1@g' \
+ -e 's@ $$(srcdir)/\(images/gen/\)@ ../\1@g' \
+ -e 's@ $$(HACK_SRC)/\(images/gen/\)@ ../\1@g' ; \
echo '' \
) > /tmp/distdepend.$$$$ && \
mv /tmp/distdepend.$$$$ Makefile.in
@@ -997,6 +999,14 @@ crumbler: crumbler.o quickhull.o $(HACK_TRACK_OBJS)
maze3d: maze3d.o $(PNG) $(HACK_TRACK_OBJS)
$(CC_HACK) -o $@ $@.o $(PNG) $(PNG_LIBS) $(HACK_TRACK_OBJS) $(HACK_LIBS)
+HANDSY_OBJS=gllist.o handsy_model.o normals.o $(HACK_TRACK_OBJS)
+handsy: handsy.o $(HANDSY_OBJS)
+ $(CC_HACK) -o $@ $@.o $(HANDSY_OBJS) $(HACK_LIBS)
+
+handsy_dxf::
+ ./dxf2gl.pl --smooth 28 --layers handsy.dxf handsy_model.c
+
+
##############################################################################
#
# DO NOT DELETE: updated by make distdepend
@@ -1062,7 +1072,7 @@ antspotlight.o: $(HACK_SRC)/xlockmore.h
atlantis.o: $(srcdir)/atlantis.h
atlantis.o: ../../config.h
atlantis.o: $(HACK_SRC)/fps.h
-atlantis.o: $(HACK_SRC)/images/gen/sea-texture_png.h
+atlantis.o: ../images/gen/sea-texture_png.h
atlantis.o: $(HACK_SRC)/recanim.h
atlantis.o: $(HACK_SRC)/screenhackI.h
atlantis.o: $(UTILS_SRC)/colors.h
@@ -1079,12 +1089,12 @@ atlantis.o: $(HACK_SRC)/xlockmoreI.h
atlantis.o: $(HACK_SRC)/xlockmore.h
atunnel.o: ../../config.h
atunnel.o: $(HACK_SRC)/fps.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel0_png.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel1_png.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel2_png.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel3_png.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel4_png.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel5_png.h
+atunnel.o: ../images/gen/tunnel0_png.h
+atunnel.o: ../images/gen/tunnel1_png.h
+atunnel.o: ../images/gen/tunnel2_png.h
+atunnel.o: ../images/gen/tunnel3_png.h
+atunnel.o: ../images/gen/tunnel4_png.h
+atunnel.o: ../images/gen/tunnel5_png.h
atunnel.o: $(HACK_SRC)/recanim.h
atunnel.o: $(HACK_SRC)/screenhackI.h
atunnel.o: $(srcdir)/tunnel_draw.h
@@ -1149,7 +1159,7 @@ b_lockglue.o: $(HACK_SRC)/xlockmoreI.h
b_lockglue.o: $(HACK_SRC)/xlockmore.h
blocktube.o: ../../config.h
blocktube.o: $(HACK_SRC)/fps.h
-blocktube.o: $(HACK_SRC)/images/gen/blocktube_png.h
+blocktube.o: ../images/gen/blocktube_png.h
blocktube.o: $(HACK_SRC)/recanim.h
blocktube.o: $(HACK_SRC)/screenhackI.h
blocktube.o: $(UTILS_SRC)/colors.h
@@ -1249,7 +1259,7 @@ buildlwo.o: $(srcdir)/buildlwo.h
buildlwo.o: ../../config.h
cage.o: ../../config.h
cage.o: $(HACK_SRC)/fps.h
-cage.o: $(HACK_SRC)/images/gen/wood_png.h
+cage.o: ../images/gen/wood_png.h
cage.o: $(HACK_SRC)/recanim.h
cage.o: $(HACK_SRC)/screenhackI.h
cage.o: $(UTILS_SRC)/colors.h
@@ -1582,10 +1592,10 @@ dymaxionmap.o: ../../config.h
dymaxionmap.o: $(srcdir)/dymaxionmap-coords.h
dymaxionmap.o: $(HACK_SRC)/fps.h
dymaxionmap.o: $(srcdir)/gltrackball.h
-dymaxionmap.o: $(HACK_SRC)/images/gen/earth_flat_png.h
-dymaxionmap.o: $(HACK_SRC)/images/gen/earth_night_png.h
-dymaxionmap.o: $(HACK_SRC)/images/gen/earth_png.h
-dymaxionmap.o: $(HACK_SRC)/images/gen/ground_png.h
+dymaxionmap.o: ../images/gen/earth_flat_png.h
+dymaxionmap.o: ../images/gen/earth_night_png.h
+dymaxionmap.o: ../images/gen/earth_png.h
+dymaxionmap.o: ../images/gen/ground_png.h
dymaxionmap.o: $(srcdir)/normals.h
dymaxionmap.o: $(HACK_SRC)/recanim.h
dymaxionmap.o: $(srcdir)/rotator.h
@@ -1804,8 +1814,8 @@ flyingtoasters.o: ../../config.h
flyingtoasters.o: $(HACK_SRC)/fps.h
flyingtoasters.o: $(srcdir)/gllist.h
flyingtoasters.o: $(srcdir)/gltrackball.h
-flyingtoasters.o: $(HACK_SRC)/images/gen/chromesphere_png.h
-flyingtoasters.o: $(HACK_SRC)/images/gen/toast_png.h
+flyingtoasters.o: ../images/gen/chromesphere_png.h
+flyingtoasters.o: ../images/gen/toast_png.h
flyingtoasters.o: $(HACK_SRC)/recanim.h
flyingtoasters.o: $(HACK_SRC)/screenhackI.h
flyingtoasters.o: $(UTILS_SRC)/colors.h
@@ -1965,8 +1975,8 @@ gleidescope.o: $(HACK_SRC)/xlockmore.h
glforestfire.o: ../../config.h
glforestfire.o: $(HACK_SRC)/fps.h
glforestfire.o: $(srcdir)/gltrackball.h
-glforestfire.o: $(HACK_SRC)/images/gen/ground_png.h
-glforestfire.o: $(HACK_SRC)/images/gen/tree_png.h
+glforestfire.o: ../images/gen/ground_png.h
+glforestfire.o: ../images/gen/tree_png.h
glforestfire.o: $(HACK_SRC)/recanim.h
glforestfire.o: $(HACK_SRC)/screenhackI.h
glforestfire.o: $(UTILS_SRC)/colors.h
@@ -2019,7 +2029,7 @@ gllist.o: ../../config.h
gllist.o: $(srcdir)/gllist.h
glmatrix.o: ../../config.h
glmatrix.o: $(HACK_SRC)/fps.h
-glmatrix.o: $(HACK_SRC)/images/gen/matrix3_png.h
+glmatrix.o: ../images/gen/matrix3_png.h
glmatrix.o: $(HACK_SRC)/recanim.h
glmatrix.o: $(HACK_SRC)/screenhackI.h
glmatrix.o: $(UTILS_SRC)/colors.h
@@ -2037,8 +2047,8 @@ glmatrix.o: $(HACK_SRC)/xlockmore.h
glplanet.o: ../../config.h
glplanet.o: $(HACK_SRC)/fps.h
glplanet.o: $(srcdir)/gltrackball.h
-glplanet.o: $(HACK_SRC)/images/gen/earth_night_png.h
-glplanet.o: $(HACK_SRC)/images/gen/earth_png.h
+glplanet.o: ../images/gen/earth_night_png.h
+glplanet.o: ../images/gen/earth_png.h
glplanet.o: $(HACK_SRC)/recanim.h
glplanet.o: $(srcdir)/rotator.h
glplanet.o: $(HACK_SRC)/screenhackI.h
@@ -2151,6 +2161,29 @@ grab-ximage.o: $(UTILS_SRC)/grabscreen.h
grab-ximage.o: $(UTILS_SRC)/pow2.h
grab-ximage.o: $(UTILS_SRC)/visual.h
grab-ximage.o: $(UTILS_SRC)/xshm.h
+handsy_model.o: ../../config.h
+handsy_model.o: $(srcdir)/gllist.h
+handsy.o: ../../config.h
+handsy.o: $(HACK_SRC)/fps.h
+handsy.o: $(srcdir)/gllist.h
+handsy.o: $(srcdir)/gltrackball.h
+handsy.o: $(srcdir)/handsy_anim.h
+handsy.o: $(HACK_SRC)/recanim.h
+handsy.o: $(srcdir)/rotator.h
+handsy.o: $(HACK_SRC)/screenhackI.h
+handsy.o: $(srcdir)/sphere.h
+handsy.o: $(srcdir)/tube.h
+handsy.o: $(UTILS_SRC)/colors.h
+handsy.o: $(UTILS_SRC)/erase.h
+handsy.o: $(UTILS_SRC)/font-retry.h
+handsy.o: $(UTILS_SRC)/grabscreen.h
+handsy.o: $(UTILS_SRC)/hsv.h
+handsy.o: $(UTILS_SRC)/resources.h
+handsy.o: $(UTILS_SRC)/usleep.h
+handsy.o: $(UTILS_SRC)/visual.h
+handsy.o: $(UTILS_SRC)/yarandom.h
+handsy.o: $(HACK_SRC)/xlockmoreI.h
+handsy.o: $(HACK_SRC)/xlockmore.h
hexstrut.o: ../../config.h
hexstrut.o: $(HACK_SRC)/fps.h
hexstrut.o: $(srcdir)/gltrackball.h
@@ -2255,7 +2288,7 @@ involute.o: $(UTILS_SRC)/yarandom.h
jigglypuff.o: ../../config.h
jigglypuff.o: $(HACK_SRC)/fps.h
jigglypuff.o: $(srcdir)/gltrackball.h
-jigglypuff.o: $(HACK_SRC)/images/gen/jigglymap_png.h
+jigglypuff.o: ../images/gen/jigglymap_png.h
jigglypuff.o: $(HACK_SRC)/recanim.h
jigglypuff.o: $(HACK_SRC)/screenhackI.h
jigglypuff.o: $(UTILS_SRC)/colors.h
@@ -2352,7 +2385,7 @@ lament.o: ../../config.h
lament.o: $(HACK_SRC)/fps.h
lament.o: $(srcdir)/gllist.h
lament.o: $(srcdir)/gltrackball.h
-lament.o: $(HACK_SRC)/images/gen/lament512_png.h
+lament.o: ../images/gen/lament512_png.h
lament.o: $(srcdir)/normals.h
lament.o: $(HACK_SRC)/recanim.h
lament.o: $(srcdir)/rotator.h
@@ -2408,12 +2441,12 @@ marching.o: $(srcdir)/marching.h
marching.o: $(srcdir)/normals.h
maze3d.o: ../../config.h
maze3d.o: $(HACK_SRC)/fps.h
-maze3d.o: $(HACK_SRC)/images/gen/bob_png.h
-maze3d.o: $(HACK_SRC)/images/gen/brick1_png.h
-maze3d.o: $(HACK_SRC)/images/gen/brick2_png.h
-maze3d.o: $(HACK_SRC)/images/gen/logo-32_png.h
-maze3d.o: $(HACK_SRC)/images/gen/start_png.h
-maze3d.o: $(HACK_SRC)/images/gen/wood2_png.h
+maze3d.o: ../images/gen/bob_png.h
+maze3d.o: ../images/gen/brick1_png.h
+maze3d.o: ../images/gen/brick2_png.h
+maze3d.o: ../images/gen/logo-32_png.h
+maze3d.o: ../images/gen/start_png.h
+maze3d.o: ../images/gen/wood2_png.h
maze3d.o: $(HACK_SRC)/recanim.h
maze3d.o: $(HACK_SRC)/screenhackI.h
maze3d.o: $(UTILS_SRC)/colors.h
@@ -2557,8 +2590,8 @@ normals.o: $(srcdir)/normals.h
peepers.o: ../../config.h
peepers.o: $(HACK_SRC)/fps.h
peepers.o: $(srcdir)/gltrackball.h
-peepers.o: $(HACK_SRC)/images/gen/iris_png.h
-peepers.o: $(HACK_SRC)/images/gen/sclera_png.h
+peepers.o: ../images/gen/iris_png.h
+peepers.o: ../images/gen/sclera_png.h
peepers.o: $(srcdir)/normals.h
peepers.o: $(HACK_SRC)/recanim.h
peepers.o: $(srcdir)/rotator.h
@@ -2875,8 +2908,8 @@ s1_b.o: $(srcdir)/gllist.h
sballs.o: ../../config.h
sballs.o: $(HACK_SRC)/fps.h
sballs.o: $(srcdir)/gltrackball.h
-sballs.o: $(HACK_SRC)/images/gen/sball-bg_png.h
-sballs.o: $(HACK_SRC)/images/gen/sball_png.h
+sballs.o: ../images/gen/sball-bg_png.h
+sballs.o: ../images/gen/sball_png.h
sballs.o: $(HACK_SRC)/recanim.h
sballs.o: $(HACK_SRC)/screenhackI.h
sballs.o: $(UTILS_SRC)/colors.h
@@ -2928,7 +2961,7 @@ sierpinski3d.o: $(HACK_SRC)/xlockmore.h
skytentacles.o: ../../config.h
skytentacles.o: $(HACK_SRC)/fps.h
skytentacles.o: $(srcdir)/gltrackball.h
-skytentacles.o: $(HACK_SRC)/images/gen/scales_png.h
+skytentacles.o: ../images/gen/scales_png.h
skytentacles.o: $(srcdir)/normals.h
skytentacles.o: $(HACK_SRC)/recanim.h
skytentacles.o: $(srcdir)/rotator.h
@@ -3094,7 +3127,7 @@ sproingiewrap.o: $(HACK_SRC)/xlockmore.h
stairs.o: ../../config.h
stairs.o: $(HACK_SRC)/fps.h
stairs.o: $(srcdir)/gltrackball.h
-stairs.o: $(HACK_SRC)/images/gen/wood_png.h
+stairs.o: ../images/gen/wood_png.h
stairs.o: $(HACK_SRC)/recanim.h
stairs.o: $(HACK_SRC)/screenhackI.h
stairs.o: $(srcdir)/sphere.h
@@ -3242,11 +3275,11 @@ texfont.o: $(UTILS_SRC)/xshm.h
timetunnel.o: ../../config.h
timetunnel.o: $(HACK_SRC)/fps.h
timetunnel.o: $(srcdir)/gltrackball.h
-timetunnel.o: $(HACK_SRC)/images/gen/logo-180_png.h
-timetunnel.o: $(HACK_SRC)/images/gen/timetunnel0_png.h
-timetunnel.o: $(HACK_SRC)/images/gen/timetunnel1_png.h
-timetunnel.o: $(HACK_SRC)/images/gen/timetunnel2_png.h
-timetunnel.o: $(HACK_SRC)/images/gen/tunnelstar_png.h
+timetunnel.o: ../images/gen/logo-180_png.h
+timetunnel.o: ../images/gen/timetunnel0_png.h
+timetunnel.o: ../images/gen/timetunnel1_png.h
+timetunnel.o: ../images/gen/timetunnel2_png.h
+timetunnel.o: ../images/gen/tunnelstar_png.h
timetunnel.o: $(HACK_SRC)/recanim.h
timetunnel.o: $(srcdir)/rotator.h
timetunnel.o: $(HACK_SRC)/screenhackI.h
@@ -3433,7 +3466,7 @@ winduprobot.o: ../../config.h
winduprobot.o: $(HACK_SRC)/fps.h
winduprobot.o: $(srcdir)/gllist.h
winduprobot.o: $(srcdir)/gltrackball.h
-winduprobot.o: $(HACK_SRC)/images/gen/chromesphere_png.h
+winduprobot.o: ../images/gen/chromesphere_png.h
winduprobot.o: $(srcdir)/involute.h
winduprobot.o: $(HACK_SRC)/recanim.h
winduprobot.o: $(HACK_SRC)/screenhackI.h
diff --git a/hacks/glx/antinspect.c b/hacks/glx/antinspect.c
index ad3bef5..8f2152b 100644
--- a/hacks/glx/antinspect.c
+++ b/hacks/glx/antinspect.c
@@ -19,7 +19,6 @@
#define DEFAULTS "*delay: 20000 \n" \
"*showFPS: False \n"
-# define free_antinspect 0
# define release_antinspect 0
#include "xlockmore.h"
#else
@@ -645,7 +644,7 @@ ENTRYPOINT void draw_antinspect(ModeInfo * mi)
if(!mp->glx_context)
return;
- glXMakeCurrent(display, window, *(mp->glx_context));
+ glXMakeCurrent(display, window, *mp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -695,10 +694,17 @@ ENTRYPOINT void change_antinspect(ModeInfo * mi)
if (!mp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
pinit();
}
#endif /* !STANDALONE */
+ENTRYPOINT void free_antinspect(ModeInfo * mi)
+{
+ antinspectstruct *mp = &antinspect[MI_SCREEN(mi)];
+ if (!mp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+ gltrackball_free (mp->trackball);
+}
XSCREENSAVER_MODULE ("AntInspect", antinspect)
diff --git a/hacks/glx/antmaze.c b/hacks/glx/antmaze.c
index 79b7e0b..6853b35 100644
--- a/hacks/glx/antmaze.c
+++ b/hacks/glx/antmaze.c
@@ -25,7 +25,6 @@ static const char sccsid[] = "@(#)antmaze.c 5.01 2001/03/01 xlockmore";
"*showFPS: False \n" \
"*fpsSolid: True \n"
-# define free_antmaze 0
# define release_antmaze 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
@@ -1442,7 +1441,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi)
return;
mi->polygon_count = 0;
- glXMakeCurrent(display, window, *(mp->glx_context));
+ glXMakeCurrent(display, window, *mp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -1603,11 +1602,22 @@ ENTRYPOINT void change_antmaze(ModeInfo * mi)
if (!mp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
pinit();
}
#endif /* !STANDALONE */
+ENTRYPOINT void free_antmaze(ModeInfo * mi)
+{
+ antmazestruct *mp = &antmaze[MI_SCREEN(mi)];
+ if (!mp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+ gltrackball_free (mp->trackball);
+ free_rotator (mp->rot);
+ if (mp->checktexture) glDeleteTextures (1, &mp->checktexture);
+ if (mp->brushedtexture) glDeleteTextures (1, &mp->brushedtexture);
+}
+
XSCREENSAVER_MODULE ("AntMaze", antmaze)
#endif
diff --git a/hacks/glx/antspotlight.c b/hacks/glx/antspotlight.c
index 55bb80c..f5e1e69 100644
--- a/hacks/glx/antspotlight.c
+++ b/hacks/glx/antspotlight.c
@@ -19,7 +19,6 @@
"*showFPS: False \n" \
"*useSHM: True \n"
-# define free_antspotlight 0
# define release_antspotlight 0
#include "xlockmore.h"
#else
@@ -750,7 +749,7 @@ ENTRYPOINT void draw_antspotlight(ModeInfo * mi)
/* Just keep running before the texture has come in. */
/* if (mp->waiting_for_image_p) return; */
- glXMakeCurrent(display, window, *(mp->glx_context));
+ glXMakeCurrent(display, window, *mp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -791,9 +790,19 @@ ENTRYPOINT void change_antspotlight(ModeInfo * mi)
if (!mp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
pinit();
}
#endif /* !STANDALONE */
+ENTRYPOINT void free_antspotlight(ModeInfo * mi)
+{
+ antspotlightstruct *mp = &antspotlight[MI_SCREEN(mi)];
+ if (!mp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+ gltrackball_free (mp->trackball);
+ free_rotator (mp->rot);
+ if (mp->screentexture) glDeleteTextures (1, &mp->screentexture);
+}
+
XSCREENSAVER_MODULE ("AntSpotlight", antspotlight)
diff --git a/hacks/glx/atlantis.c b/hacks/glx/atlantis.c
index 04bde12..05ea903 100644
--- a/hacks/glx/atlantis.c
+++ b/hacks/glx/atlantis.c
@@ -308,6 +308,9 @@ Init(ModeInfo *mi)
glLoadIdentity();
glScalef(scale, scale, 1);
glMatrixMode(GL_MODELVIEW);
+
+ if (ap->texture) XDestroyImage (ap->texture);
+ ap->texture = 0;
}
InitFishs(ap);
@@ -466,7 +469,7 @@ init_atlantis(ModeInfo * mi)
if ((ap->sharks = (fishRec *) calloc(ap->num_sharks,
sizeof (fishRec))) == NULL) {
/* free everything up to now */
- (void) free((void *) atlantis);
+ free(atlantis);
atlantis = NULL;
return;
}
@@ -520,7 +523,7 @@ draw_atlantis(ModeInfo * mi)
if (!ap->glx_context)
return;
- glXMakeCurrent(display, window, *(ap->glx_context));
+ glXMakeCurrent(display, window, *ap->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -545,12 +548,10 @@ draw_atlantis(ModeInfo * mi)
ENTRYPOINT void
free_atlantis(ModeInfo * mi)
{
-#if 0
- atlantisstruct *ap = &atlantis[screen];
-
- if (ap->sharks)
- (void) free((void *) ap->sharks);
-#endif
+ atlantisstruct *ap = &atlantis[MI_SCREEN(mi)];
+ if (!ap->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ap->glx_context);
+ if (ap->sharks) free(ap->sharks);
}
#ifndef STANDALONE
@@ -567,7 +568,7 @@ change_atlantis(ModeInfo * mi)
if (!ap->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ap->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ap->glx_context);
Init(mi);
}
#endif /* !STANDALONE */
diff --git a/hacks/glx/atunnel.c b/hacks/glx/atunnel.c
index f21d04f..1b8fb07 100644
--- a/hacks/glx/atunnel.c
+++ b/hacks/glx/atunnel.c
@@ -267,7 +267,7 @@ ENTRYPOINT void draw_atunnel(ModeInfo * mi)
if (!sa->glx_context)
return;
- glXMakeCurrent(display, window, *(sa->glx_context));
+ glXMakeCurrent(display, window, *sa->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -303,13 +303,13 @@ ENTRYPOINT void init_atunnel(ModeInfo * mi)
}
-/* all sorts of nice cleanup code should go here! */
ENTRYPOINT void free_atunnel(ModeInfo * mi)
{
-#if 0
atunnelstruct *sa = &Atunnel[MI_SCREEN(mi)];
- FreeTunnel(sa->ts);
-#endif
+ if (!sa->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sa->glx_context);
+ atunnel_FreeTunnel(sa->ts);
+ glDeleteTextures (MAX_TEXTURE, sa->texture);
}
XSCREENSAVER_MODULE ("Atunnel", atunnel)
diff --git a/hacks/glx/b_draw.c b/hacks/glx/b_draw.c
index 977efbe..1b789b6 100644
--- a/hacks/glx/b_draw.c
+++ b/hacks/glx/b_draw.c
@@ -127,8 +127,8 @@ glb_draw_end(void *cc)
glb_sphere_end (c->d);
- (void) free((void *) c->bubble_list);
- (void) free((void *) c);
+ free(c->bubble_list);
+ free(c);
}
static int
diff --git a/hacks/glx/b_lockglue.c b/hacks/glx/b_lockglue.c
index 1bb1e67..d134a66 100644
--- a/hacks/glx/b_lockglue.c
+++ b/hacks/glx/b_lockglue.c
@@ -195,7 +195,7 @@ draw_bubble3d(ModeInfo * mi)
if (!c->glx_context)
return;
- glXMakeCurrent(display, window, *(c->glx_context));
+ glXMakeCurrent(display, window, *c->glx_context);
glb_config.polygon_count = 0;
glPushMatrix();
@@ -231,8 +231,9 @@ ENTRYPOINT void
free_bubble3d(ModeInfo * mi)
{
struct context *c = &contexts[MI_SCREEN(mi)];
- if (c->draw_context)
- glb_draw_end(c->draw_context);
+ if (!c->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *c->glx_context);
+ if (c->draw_context) glb_draw_end(c->draw_context);
}
XSCREENSAVER_MODULE ("Bubble3D", bubble3d)
diff --git a/hacks/glx/b_sphere.c b/hacks/glx/b_sphere.c
index 78be392..38e3d79 100644
--- a/hacks/glx/b_sphere.c
+++ b/hacks/glx/b_sphere.c
@@ -213,7 +213,7 @@ glb_sphere_get_triangles(glb_data *d, int *nr_triangles_ptr)
void
glb_sphere_end(glb_data *d)
{
- (void) free((void *) d->vertices);
- (void) free((void *) d->triangles);
+ free(d->vertices);
+ free(d->triangles);
free (d);
}
diff --git a/hacks/glx/blinkbox.c b/hacks/glx/blinkbox.c
index f777371..45071a9 100644
--- a/hacks/glx/blinkbox.c
+++ b/hacks/glx/blinkbox.c
@@ -16,7 +16,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_ball 0
# define release_ball 0
# define ball_handle_event xlockmore_no_events
#undef countof
@@ -383,11 +382,11 @@ init_ball (ModeInfo *mi)
#define SPHERE_SLICES 12 /* how densely to render spheres */
#define SPHERE_STACKS 16
- bp->sp = malloc(sizeof(*bp->sp));
+/* bp->sp = malloc(sizeof(*bp->sp));
if(bp->sp == NULL){
fprintf(stderr,"Could not allocate memory\n");
exit(1);
- }
+ }*/
if( (bp->bscale.wh < 1) ||
(bp->bscale.wh > 8) ) {
fprintf(stderr,"Boxsize out of range. Using default\n");
@@ -449,7 +448,7 @@ draw_ball (ModeInfo *mi)
if (! bp->glx_context)
return;
mi->polygon_count = 0;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -603,6 +602,16 @@ draw_ball (ModeInfo *mi)
}
+ENTRYPOINT void
+free_ball (ModeInfo *mi)
+{
+ blinkboxstruct *bp = &blinkbox[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (glIsList(bp->ballList)) glDeleteLists(bp->ballList, 1);
+ if (glIsList(bp->boxList)) glDeleteLists(bp->boxList, 1);
+}
+
XSCREENSAVER_MODULE_2 ("BlinkBox", blinkbox, ball)
#endif /* USE_GL */
diff --git a/hacks/glx/blocktube.c b/hacks/glx/blocktube.c
index d4a402e..811b185 100644
--- a/hacks/glx/blocktube.c
+++ b/hacks/glx/blocktube.c
@@ -291,14 +291,13 @@ ENTRYPOINT void free_blocktube (ModeInfo *mi)
{
blocktube_configuration *lp = &lps[MI_SCREEN(mi)];
# if defined ( I_HAVE_XPM )
- if (lp->glx_context) {
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context));
-
- if (lp->envTexture)
- glDeleteTextures(1, &lp->envTexture);
- if (lp->texti)
- XDestroyImage(lp->texti);
- }
+ if (!lp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *lp->glx_context);
+ if (lp->envTexture) glDeleteTextures(1, &lp->envTexture);
+ if (lp->texti) XDestroyImage(lp->texti);
+ if (glIsList(lp->block_dlist)) glDeleteLists(lp->block_dlist, 1);
+ if (lp->envTexture) glDeleteTextures (1, &lp->envTexture);
+
# endif
}
@@ -308,7 +307,7 @@ ENTRYPOINT void reshape_blocktube (ModeInfo *mi, int width, int height)
GLfloat h = (GLfloat) height / (GLfloat) width;
int y = 0;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *lp->glx_context);
if (width > height * 5) { /* tiny window: show middle */
height = width;
@@ -421,7 +420,7 @@ draw_blocktube (ModeInfo *mi)
mi->polygon_count = 0;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *lp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
diff --git a/hacks/glx/boing.c b/hacks/glx/boing.c
index 55a05f3..adaf96b 100644
--- a/hacks/glx/boing.c
+++ b/hacks/glx/boing.c
@@ -25,7 +25,6 @@
"*showFPS: False \n" \
"*wireframe: False \n" \
-# define free_boing 0
# define release_boing 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -595,7 +594,7 @@ draw_boing (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
mi->polygon_count = 0;
@@ -653,6 +652,16 @@ draw_boing (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_boing (ModeInfo *mi)
+{
+ boing_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+}
+
XSCREENSAVER_MODULE ("Boing", boing)
#endif /* USE_GL */
diff --git a/hacks/glx/bouncingcow.c b/hacks/glx/bouncingcow.c
index 6f9b45d..bcbea24 100644
--- a/hacks/glx/bouncingcow.c
+++ b/hacks/glx/bouncingcow.c
@@ -16,7 +16,6 @@
"*showFPS: False \n" \
"*wireframe: False \n" \
-# define free_cow 0
# define release_cow 0
#define DEF_SPEED "1.0"
#define DEF_TEXTURE "(none)"
@@ -463,7 +462,7 @@ draw_cow (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -514,6 +513,25 @@ draw_cow (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_cow (ModeInfo *mi)
+{
+ cow_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->floaters) {
+ for (i = 0; i < bp->nfloaters; i++)
+ free_rotator (bp->floaters[i].rot);
+ free (bp->floaters);
+ }
+ for (i = 0; i < countof(all_objs); i++)
+ if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->dlists) free (bp->dlists);
+}
+
XSCREENSAVER_MODULE_2 ("BouncingCow", bouncingcow, cow)
#endif /* USE_GL */
diff --git a/hacks/glx/boxed.c b/hacks/glx/boxed.c
index 136d468..6ce82bb 100644
--- a/hacks/glx/boxed.c
+++ b/hacks/glx/boxed.c
@@ -1330,7 +1330,7 @@ draw_boxed(ModeInfo * mi)
glDrawBuffer(GL_BACK);
- glXMakeCurrent(display, window, *(gp->glx_context));
+ glXMakeCurrent(display, window, *gp->glx_context);
draw(mi);
if (mi->fps_p) do_fps (mi);
@@ -1343,23 +1343,17 @@ free_boxed(ModeInfo * mi)
{
boxedstruct *gp = &boxed[MI_SCREEN(mi)];
int i;
-
- if (gp->glx_context) {
- /* Display lists MUST be freed while their glXContext is current. */
- glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
-
- if (glIsList(gp->listobjects))
- glDeleteLists(gp->listobjects, 3);
-
- for (i=0;i<gp->bman.num_balls;i++) {
- if (gp->bman.balls[i].bounced) freetris(&gp->tman[i]);
- }
- free (gp->bman.balls);
- free (gp->tman);
- free (gp->tex1);
-
-
- }
+ if (!gp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), gp->window, *gp->glx_context);
+ if (glIsList(gp->listobjects)) glDeleteLists(gp->listobjects, 3);
+ for (i=0;i<gp->bman.num_balls;i++)
+ if (gp->bman.balls[i].bounced) freetris(&gp->tman[i]);
+ glDeleteLists (gp->gllists[0], 1);
+ glDeleteLists (gp->gllists[1], 1);
+ glDeleteLists (gp->gllists[2], 1);
+ free (gp->bman.balls);
+ free (gp->tman);
+ free (gp->tex1);
}
diff --git a/hacks/glx/bubble3d.c b/hacks/glx/bubble3d.c
index 9cd2afc..7b0b686 100644
--- a/hacks/glx/bubble3d.c
+++ b/hacks/glx/bubble3d.c
@@ -114,20 +114,20 @@ glb_bubble_new(glb_data *d, GLfloat x, GLfloat y, GLfloat z, GLfloat scale,
b->contributions = (GLfloat *) malloc(sizeof (GLfloat) * nr_vertices *
glb_config.nr_nudge_axes);
if (b->contributions == 0) {
- (void) free((void *) b);
+ free(b);
return 0;
}
b->nudge_angle = (GLfloat *) malloc(sizeof (GLfloat) * glb_config.nr_nudge_axes);
if (b->nudge_angle == 0) {
- (void) free((void *) b->contributions);
- (void) free((void *) b);
+ free(b->contributions);
+ free(b);
return 0;
}
b->nudge_angle_incr = (GLfloat *) malloc(sizeof (GLfloat) * glb_config.nr_nudge_axes);
if (b->nudge_angle_incr == 0) {
- (void) free((void *) b->nudge_angle);
- (void) free((void *) b->contributions);
- (void) free((void *) b);
+ free(b->nudge_angle);
+ free(b->contributions);
+ free(b);
return 0;
}
/* Initialize primitive elements. */
@@ -176,18 +176,18 @@ glb_bubble_delete(void *bb)
if (b != NULL) {
if (b->nudge_angle_incr) {
- (void) free((void *) b->nudge_angle_incr);
+ free(b->nudge_angle_incr);
b->nudge_angle_incr = NULL;
}
if (b->nudge_angle) {
- (void) free((void *) b->nudge_angle);
+ free(b->nudge_angle);
b->nudge_angle = NULL;
}
if (b->contributions) {
- (void) free((void *) b->contributions);
+ free(b->contributions);
b->contributions = NULL;
}
- (void) free((void *) b);
+ free(b);
b = NULL;
}
}
@@ -267,7 +267,7 @@ glb_bubble_draw(glb_data *d, void *bb)
}
glEnd();
glPopMatrix();
- (void) free((void *) new_vertices);
+ free(new_vertices);
glb_config.polygon_count += nr_triangles;
}
diff --git a/hacks/glx/cage.c b/hacks/glx/cage.c
index 66f48aa..32384a7 100644
--- a/hacks/glx/cage.c
+++ b/hacks/glx/cage.c
@@ -82,7 +82,6 @@ static const char sccsid[] = "@(#)cage.c 5.01 2001/03/01 xlockmore";
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_cage 0
# define release_cage 0
# define cage_handle_event xlockmore_no_events
# include "xlockmore.h" /* from the xscreensaver distribution */
@@ -418,7 +417,7 @@ draw_cage (ModeInfo * mi)
return;
mi->polygon_count = 0;
- glXMakeCurrent(display, window, *(cp->glx_context));
+ glXMakeCurrent(display, window, *cp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -470,11 +469,17 @@ change_cage (ModeInfo * mi)
if (!cp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
pinit(mi);
}
#endif /* !STANDALONE */
+ENTRYPOINT void
+free_cage (ModeInfo * mi)
+{
+ /* nothing to do */
+}
+
XSCREENSAVER_MODULE ("Cage", cage)
#endif
diff --git a/hacks/glx/carousel.c b/hacks/glx/carousel.c
index 863b1a5..c1132b1 100644
--- a/hacks/glx/carousel.c
+++ b/hacks/glx/carousel.c
@@ -34,7 +34,6 @@
"*grabDesktopImages: False \n" \
"*chooseRandomImages: True \n"
-# define free_carousel 0
# define release_carousel 0
# include "xlockmore.h"
@@ -497,6 +496,7 @@ hack_resources (Display *dpy)
value.addr = buf2;
value.size = strlen(buf2);
XrmPutResource (&db, buf1, "String", &value);
+ free (val);
# endif /* !HAVE_JWXYZ */
}
@@ -847,7 +847,7 @@ draw_carousel (ModeInfo *mi)
if (!ss->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
if (ss->awaiting_first_images_p)
if (!load_initial_images (mi))
@@ -936,6 +936,29 @@ draw_carousel (ModeInfo *mi)
glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi));
}
+
+ENTRYPOINT void
+free_carousel (ModeInfo *mi)
+{
+ carousel_state *ss = &sss[MI_SCREEN(mi)];
+ int i;
+ if (!ss->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
+ if (ss->rot) free_rotator (ss->rot);
+ if (ss->trackball) gltrackball_free (ss->trackball);
+ if (ss->texfont) free_texture_font (ss->texfont);
+ if (ss->titlefont) free_texture_font (ss->titlefont);
+ for (i = 0; i < ss->nframes; i++) {
+ if (ss->frames[i]->current.title) free (ss->frames[i]->current.title);
+ if (ss->frames[i]->loading.title) free (ss->frames[i]->loading.title);
+ if (ss->frames[i]->rot) free_rotator (ss->frames[i]->rot);
+ if (ss->frames[i]->current.texid)
+ glDeleteTextures (1, &ss->frames[i]->current.texid);
+ if (ss->frames[i]->loading.texid)
+ glDeleteTextures (1, &ss->frames[i]->loading.texid);
+ }
+}
+
XSCREENSAVER_MODULE ("Carousel", carousel)
#endif /* USE_GL */
diff --git a/hacks/glx/circuit.c b/hacks/glx/circuit.c
index 744e4b6..b8b845e 100644
--- a/hacks/glx/circuit.c
+++ b/hacks/glx/circuit.c
@@ -2072,7 +2072,7 @@ ENTRYPOINT void draw_circuit(ModeInfo *mi)
if (!ci->glx_context)
return;
- glXMakeCurrent(disp, w, *(ci->glx_context));
+ glXMakeCurrent(disp, w, *ci->glx_context);
display(mi);
@@ -2084,8 +2084,12 @@ ENTRYPOINT void draw_circuit(ModeInfo *mi)
ENTRYPOINT void free_circuit(ModeInfo *mi)
{
Circuit *ci = &circuit[MI_SCREEN(mi)];
- if (ci->font)
- free_texture_font (ci->font);
+ int i;
+ if (!ci->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *ci->glx_context);
+ if (ci->font) free_texture_font (ci->font);
+ for (i = 0 ; i < 12 ; i++)
+ if (glIsList(ci->band_list[i])) glDeleteLists(ci->band_list[i], 1);
FreeAllGL(mi);
}
diff --git a/hacks/glx/cityflow.c b/hacks/glx/cityflow.c
index 2b3bd4f..a6660af 100644
--- a/hacks/glx/cityflow.c
+++ b/hacks/glx/cityflow.c
@@ -14,7 +14,6 @@
"*showFPS: False \n" \
"*wireframe: False \n" \
-# define free_cube 0
# define release_cube 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -381,7 +380,7 @@ draw_cube (ModeInfo *mi)
return;
mi->polygon_count = 0;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
interference (mi);
animate_cubes (mi);
@@ -540,6 +539,24 @@ draw_cube (ModeInfo *mi)
}
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ if (!cc->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
+
+ if (cc->waves) {
+ free (cc->waves->srcs);
+ free (cc->waves->heights);
+ free (cc->waves);
+ }
+ if (cc->trackball) gltrackball_free (cc->trackball);
+ if (cc->cubes) free (cc->cubes);
+ if (cc->colors) free (cc->colors);
+}
+
+
XSCREENSAVER_MODULE_2 ("Cityflow", cityflow, cube)
#endif /* USE_GL */
diff --git a/hacks/glx/companion.c b/hacks/glx/companion.c
index 3c004a5..1f518b1 100644
--- a/hacks/glx/companion.c
+++ b/hacks/glx/companion.c
@@ -26,7 +26,6 @@
/* #define DEBUG */
-# define free_cube 0
# define release_cube 0
#define DEF_SPEED "1.0"
#define DEF_SPIN "False"
@@ -548,7 +547,7 @@ draw_cube (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -587,6 +586,23 @@ draw_cube (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ for (i = 0; i < bp->nfloaters; i++)
+ if (bp->floaters[i].rot) free_rotator (bp->floaters[i].rot);
+ for (i = 0; i < countof(all_objs)+1; i++)
+ if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+ if (bp->floaters) free (bp->floaters);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->dlists) free (bp->dlists);
+}
+
XSCREENSAVER_MODULE_2 ("CompanionCube", companioncube, cube)
#endif /* USE_GL */
diff --git a/hacks/glx/crackberg.c b/hacks/glx/crackberg.c
index 74c6915..22d3adc 100644
--- a/hacks/glx/crackberg.c
+++ b/hacks/glx/crackberg.c
@@ -95,7 +95,7 @@ struct _Trile {
const Morph *morph;
struct _Trile *left, *right, *parent; /* for bst, NOT spatial */
- struct _Trile *next_free; /* for memory allocation */
+ struct _Trile *next_free, *next0; /* for memory allocation */
};
enum { MOTION_AUTO = 0, MOTION_MANUAL = 1, MOTION_LROT= 2, MOTION_RROT = 4,
@@ -124,6 +124,7 @@ struct _cberg_state {
double *heights, *norms;
Trile *free_head; /* for trile_[alloc|free] */
+ Trile *all_triles;
double draw_elapsed;
@@ -539,13 +540,15 @@ static Trile *trile_alloc(cberg_state *cberg)
cberg->free_head = cberg->free_head->next_free;
} else {
++cberg->count;
- if (!(new = malloc(sizeof(Trile)))
- || !(new->l = (double *) malloc(sizeof(double) * cberg->epoints * 3))) {
+ if (!(new = calloc(1, sizeof(Trile)))
+ || !(new->l = (double *) calloc(sizeof(double), cberg->epoints * 3))) {
perror(progname);
exit(1);
}
new->r = new->l + cberg->epoints;
new->v = new->r + cberg->epoints;
+ new->next0 = cberg->all_triles;
+ cberg->all_triles = new;
#ifdef DEBUG
printf("needed to alloc; [%d]\n", cberg->count);
#endif
@@ -584,13 +587,15 @@ static void trile_draw(Trile *tr, void *ignore)
static void grow_init(Trile *tr)
{
- tr->morph_data = (void *) malloc(sizeof(double));
+ if (!tr->morph_data)
+ tr->morph_data = (void *) malloc(sizeof(double));
*((double *)tr->morph_data) = 0.02; /* not 0; avoid normals crapping */
}
static void grow_free(Trile *tr)
{
- free(tr->morph_data);
+ if (tr->morph_data) free(tr->morph_data);
+ tr->morph_data = 0;
}
static void grow_draw(Trile *tr)
@@ -619,13 +624,15 @@ static void grow_dying_iter(Trile *tr, cberg_state *cberg)
static void fall_init(Trile *tr)
{
- tr->morph_data = (void *) malloc(sizeof(double));
+ if (!tr->morph_data)
+ tr->morph_data = (void *) malloc(sizeof(double));
*((double *)tr->morph_data) = 0.0;
}
static void fall_free(Trile *tr)
{
- free(tr->morph_data);
+ if (tr->morph_data) free(tr->morph_data);
+ tr->morph_data = 0;
}
static void fall_draw(Trile *tr)
@@ -654,13 +661,15 @@ static void fall_dying_iter(Trile *tr, cberg_state *cberg)
static void yeast_init(Trile *tr)
{
- tr->morph_data = (void *) malloc(sizeof(double));
+ if (!tr->morph_data)
+ tr->morph_data = (void *) malloc(sizeof(double));
*((double *)tr->morph_data) = 0.02;
}
static void yeast_free(Trile *tr)
{
- free(tr->morph_data);
+ if (tr->morph_data) free(tr->morph_data);
+ tr->morph_data = 0;
}
static void yeast_draw(Trile *tr)
@@ -1362,7 +1371,7 @@ ENTRYPOINT void draw_crackberg (ModeInfo *mi)
if (!cberg->glx_context) /*XXX does this get externally tweaked? it kinda*/
return; /*XXX can't.. check it in crackberg_init*/
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cberg->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cberg->glx_context);
gettimeofday(&cur_frame_t, NULL);
cur_frame = cur_frame_t.tv_sec + cur_frame_t.tv_usec / 1.0E6;
@@ -1458,9 +1467,17 @@ ENTRYPOINT void draw_crackberg (ModeInfo *mi)
ENTRYPOINT void free_crackberg (ModeInfo *mi)
{
cberg_state *cberg = &cbergs[MI_SCREEN(mi)];
- if (cberg->norms)
- free(cberg->norms);
- free(cberg->heights);
+ if (!cberg->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cberg->glx_context);
+ while (cberg->all_triles) {
+ Trile *n = cberg->all_triles;
+ cberg->all_triles = n->next0;
+ free (n->l);
+ if (n->morph_data) free (n->morph_data);
+ free (n);
+ }
+ if (cberg->norms) free(cberg->norms);
+ if (cberg->heights) free(cberg->heights);
}
XSCREENSAVER_MODULE ("Crackberg", crackberg)
diff --git a/hacks/glx/crumbler.c b/hacks/glx/crumbler.c
index 8e783db..b7b8acc 100644
--- a/hacks/glx/crumbler.c
+++ b/hacks/glx/crumbler.c
@@ -747,7 +747,7 @@ draw_crumbler (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
tick_crumbler (mi);
@@ -861,12 +861,14 @@ free_crumbler (ModeInfo *mi)
{
crumbler_configuration *bp = &bps[MI_SCREEN(mi)];
int i;
- free (bp->trackball);
- free (bp->rot);
- free (bp->colors);
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->colors) free (bp->colors);
for (i = 0; i < bp->nchunks; i++)
free_chunk (bp->chunks[i]);
- free (bp->chunks);
+ if (bp->chunks) free (bp->chunks);
}
diff --git a/hacks/glx/cube21.c b/hacks/glx/cube21.c
index 451a523..de72206 100644
--- a/hacks/glx/cube21.c
+++ b/hacks/glx/cube21.c
@@ -45,7 +45,6 @@
"*showFPS: False \n" \
"*wireframe: False \n"
-# define free_cube21 0
# define release_cube21 0
#include "xlockmore.h"
@@ -915,7 +914,7 @@ ENTRYPOINT void draw_cube21(ModeInfo * mi)
MI_IS_DRAWN(mi) = True;
if (!cp->glx_context) return;
mi->polygon_count = 0;
- glXMakeCurrent(display, window, *(cp->glx_context));
+ glXMakeCurrent(display, window, *cp->glx_context);
if (!draw_main(mi, cp)) {
MI_ABORT(mi);
return;
@@ -930,11 +929,18 @@ ENTRYPOINT void change_cube21(ModeInfo * mi)
{
cube21_conf *cp = &cube21[MI_SCREEN(mi)];
if (!cp->glx_context) return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
init_gl(mi);
}
#endif /* !STANDALONE */
+ENTRYPOINT void free_cube21(ModeInfo * mi)
+{
+ cube21_conf *cp = &cube21[MI_SCREEN(mi)];
+ if (!cp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
+ gltrackball_free (cp->trackball);
+}
XSCREENSAVER_MODULE ("Cube21", cube21)
diff --git a/hacks/glx/cubenetic.c b/hacks/glx/cubenetic.c
index cc9b0d6..0ddbb29 100644
--- a/hacks/glx/cubenetic.c
+++ b/hacks/glx/cubenetic.c
@@ -15,7 +15,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_cube 0
# define release_cube 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -530,7 +529,7 @@ draw_cube (ModeInfo *mi)
return;
mi->polygon_count = 0;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
glShadeModel(GL_FLAT);
@@ -593,6 +592,27 @@ draw_cube (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+ cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+ if (!cc->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
+ if (cc->waves) {
+ free (cc->waves->srcs);
+ free (cc->waves->heights);
+ free (cc->waves);
+ }
+ if (glIsList(cc->cube_list)) glDeleteLists(cc->cube_list, 1);
+ if (cc->rot) free_rotator (cc->rot);
+ if (cc->trackball) gltrackball_free (cc->trackball);
+ if (cc->texture_colors) free (cc->texture_colors);
+ if (cc->cube_colors) free (cc->cube_colors);
+ if (cc->texture) free (cc->texture);
+ if (cc->texture_id) glDeleteTextures (1, &cc->texture_id);
+}
+
XSCREENSAVER_MODULE_2 ("Cubenetic", cubenetic, cube)
#endif /* USE_GL */
diff --git a/hacks/glx/cubestack.c b/hacks/glx/cubestack.c
index 70883f6..928ad1c 100644
--- a/hacks/glx/cubestack.c
+++ b/hacks/glx/cubestack.c
@@ -14,7 +14,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_cube 0
# define release_cube 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -406,7 +405,7 @@ draw_cube (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix ();
@@ -457,6 +456,18 @@ draw_cube (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->colors) free (bp->colors);
+}
+
XSCREENSAVER_MODULE_2 ("CubeStack", cubestack, cube)
#endif /* USE_GL */
diff --git a/hacks/glx/cubestorm.c b/hacks/glx/cubestorm.c
index cf973c9..afa1797 100644
--- a/hacks/glx/cubestorm.c
+++ b/hacks/glx/cubestorm.c
@@ -17,7 +17,6 @@
"*suppressRotationAnimation: True\n" \
-# define free_cube 0
# define release_cube 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -391,7 +390,7 @@ draw_cube (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glShadeModel(GL_SMOOTH);
@@ -464,6 +463,25 @@ draw_cube (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+ cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->subcubes) {
+ for (i = 0; i < MI_COUNT(mi); i++)
+ free_rotator (bp->subcubes[i].rot);
+ free (bp->subcubes);
+ }
+ if (bp->hist) free (bp->hist);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->colors) free (bp->colors);
+
+}
+
XSCREENSAVER_MODULE_2 ("CubeStorm", cubestorm, cube)
#endif /* USE_GL */
diff --git a/hacks/glx/cubetwist.c b/hacks/glx/cubetwist.c
index 61af287..776e396 100644
--- a/hacks/glx/cubetwist.c
+++ b/hacks/glx/cubetwist.c
@@ -517,7 +517,7 @@ draw_cube (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
@@ -574,6 +574,8 @@ ENTRYPOINT void
free_cube (ModeInfo *mi)
{
cube_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
while (bp->cubes)
{
cube *c = bp->cubes->next;
@@ -587,6 +589,8 @@ free_cube (ModeInfo *mi)
free (bp->oscillators);
bp->oscillators = o;
}
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
}
diff --git a/hacks/glx/cubicgrid.c b/hacks/glx/cubicgrid.c
index 34b6c34..d7ef6f2 100644
--- a/hacks/glx/cubicgrid.c
+++ b/hacks/glx/cubicgrid.c
@@ -24,7 +24,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_cubicgrid 0
# define release_cubicgrid 0
#include "xlockmore.h"
@@ -242,7 +241,7 @@ ENTRYPOINT void draw_cubicgrid(ModeInfo * mi)
cp = &cubicgrid[MI_SCREEN(mi)];
MI_IS_DRAWN(mi) = True;
if (!cp->glx_context) return;
- glXMakeCurrent(display, window, *(cp->glx_context));
+ glXMakeCurrent(display, window, *cp->glx_context);
if (!draw_main(mi)) {
MI_ABORT(mi);
return;
@@ -258,11 +257,20 @@ ENTRYPOINT void change_cubicgrid(ModeInfo * mi)
{
cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)];
if (!cp->glx_context) return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
init_gl(mi);
}
#endif /* !STANDALONE */
+ENTRYPOINT void free_cubicgrid(ModeInfo * mi)
+{
+ cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)];
+ if (!cp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
+ gltrackball_free (cp->trackball);
+ free_rotator (cp->rot);
+ if (glIsList(cp->list)) glDeleteLists(cp->list, 1);
+}
XSCREENSAVER_MODULE ("CubicGrid", cubicgrid)
diff --git a/hacks/glx/dangerball.c b/hacks/glx/dangerball.c
index e40ccc5..7cb38e0 100644
--- a/hacks/glx/dangerball.c
+++ b/hacks/glx/dangerball.c
@@ -15,7 +15,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_ball 0
# define release_ball 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -294,7 +293,7 @@ draw_ball (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glShadeModel(GL_SMOOTH);
@@ -359,6 +358,21 @@ draw_ball (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_ball (ModeInfo *mi)
+{
+ ball_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->colors) free (bp->colors);
+ if (bp->spikes) free (bp->spikes);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (glIsList(bp->ball_list)) glDeleteLists(bp->ball_list, 1);
+ if (glIsList(bp->spike_list)) glDeleteLists(bp->spike_list, 1);
+}
+
XSCREENSAVER_MODULE_2 ("DangerBall", dangerball, ball)
#endif /* USE_GL */
diff --git a/hacks/glx/discoball.c b/hacks/glx/discoball.c
index 4085c56..427d7e9 100644
--- a/hacks/glx/discoball.c
+++ b/hacks/glx/discoball.c
@@ -637,7 +637,7 @@ draw_ball (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glShadeModel(GL_SMOOTH);
@@ -693,13 +693,17 @@ ENTRYPOINT void
free_ball (ModeInfo *mi)
{
ball_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
while (bp->tiles)
{
tile *t = bp->tiles->next;
free (bp->tiles);
bp->tiles = t;
}
- free (bp->rays);
+ if (bp->rays) free (bp->rays);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
}
XSCREENSAVER_MODULE_2 ("Discoball", discoball, ball)
diff --git a/hacks/glx/dnalogo.c b/hacks/glx/dnalogo.c
index 2b24f83..3afb73c 100644
--- a/hacks/glx/dnalogo.c
+++ b/hacks/glx/dnalogo.c
@@ -67,7 +67,6 @@
# define CWFONT "-*-helvetica-medium-r-normal-*-*-240-*-*-*-*-*-*"
# endif
-# define free_logo 0
# define release_logo 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -2944,6 +2943,7 @@ init_logo (ModeInfo *mi)
dc->color[2] = xcolor.blue / 65535.0;
dc->color[3] = 1.0;
+ free (color_name);
color_name = get_string_resource (mi->dpy, "cwForeground", "Foreground");
for (s2 = color_name + strlen(color_name) - 1; s2 > color_name; s2--)
if (*s2 == ' ' || *s2 == '\t')
@@ -2956,6 +2956,7 @@ init_logo (ModeInfo *mi)
fprintf (stderr, "%s: can't parse color %s\n", progname, color_name);
exit (1);
}
+ free (color_name);
# ifdef CW
dc->codeword_color[0] = xcolor.red / 65535.0;
@@ -2975,6 +2976,7 @@ init_logo (ModeInfo *mi)
fprintf (stderr, "%s: can't parse color %s\n", progname, color_name);
exit (1);
}
+ free (color_name);
dc->codeword_bg[0] = xcolor.red / 65535.0;
dc->codeword_bg[1] = xcolor.green / 65535.0;
@@ -3289,7 +3291,7 @@ draw_logo (ModeInfo *mi)
return;
mi->polygon_count = 0;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(dc->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *dc->glx_context);
if (!wire &&
dc->wire_overlay == 0 &&
@@ -3634,6 +3636,35 @@ draw_logo (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_logo (ModeInfo *mi)
+{
+ logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+ if (!dc->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *dc->glx_context);
+ if (dc->trackball) gltrackball_free (dc->trackball);
+# ifdef CW
+ if (dc->codeword_text) free (dc->codeword_text);
+ if (dc->codeword_text_out) free (dc->codeword_text_out);
+ if (dc->scene_rot) free_rotator (dc->scene_rot);
+ if (dc->font) free_texture_font (dc->font);
+# endif
+# ifdef DEBUG
+ if (dc->label_font) free_texture_font (dc->label_font);
+# endif
+ glDeleteLists(dc->helix_list, 1);
+ glDeleteLists(dc->helix_list_wire, 1);
+ glDeleteLists(dc->helix_list_facetted, 1);
+ glDeleteLists(dc->pizza_list, 1);
+ glDeleteLists(dc->pizza_list_wire, 1);
+ glDeleteLists(dc->pizza_list_facetted, 1);
+ glDeleteLists(dc->gasket_list, 1);
+ glDeleteLists(dc->gasket_list_wire, 1);
+ glDeleteLists(dc->frame_list, 1);
+ glDeleteLists(dc->frame_list_wire, 1);
+}
+
XSCREENSAVER_MODULE_2 ("DNALogo", dnalogo, logo)
#endif /* USE_GL */
diff --git a/hacks/glx/dxf2gl.pl b/hacks/glx/dxf2gl.pl
index 9ed470c..65b5a80 100755
--- a/hacks/glx/dxf2gl.pl
+++ b/hacks/glx/dxf2gl.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# Copyright © 2003-2014 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2003-2018 Jamie Zawinski <jwz@jwz.org>
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
@@ -17,8 +17,8 @@
# --normalize Compute the bounding box of the object, and scale all
# coordinates so that the object fits inside a unit cube.
#
-# --smooth When computing normals for the vertexes, average the
-# normals at any edge which is less than 90 degrees.
+# --smooth [DEG] When computing normals for the vertexes, average the
+# normals at any edge which is less than N degrees.
# If this option is not specified, planar normals will be
# used, resulting in a "faceted" object.
#
@@ -39,7 +39,7 @@ use Math::Trig qw(acos);
use Text::Wrap;
my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.11 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.13 $' =~ m/\s(\d[.\d]+)\s/s);
my $verbose = 0;
@@ -121,8 +121,8 @@ sub vector_angle($$$$$$) {
# returns a list of the normals for each vertex. These are the smoothed
# normals: the average of the normals of the participating faces.
#
-sub compute_vertex_normals(@) {
- my (@points) = @_;
+sub compute_vertex_normals($@) {
+ my ($smooth, @points) = @_;
my $npoints = ($#points+1) / 3;
my $nfaces = $npoints / 3;
@@ -185,7 +185,7 @@ sub compute_vertex_normals(@) {
# ignore any adjascent faces that are more than N degrees off.
my $angle = vector_angle ($norm[0], $norm[1], $norm[2],
$fnorm[0], $fnorm[1], $fnorm[2]);
- next if ($angle >= 30);
+ next if ($angle >= $smooth);
$nx += $fnorm[0];
$ny += $fnorm[1];
@@ -208,7 +208,7 @@ sub parse_dxf($$$$$) {
# Convert whitespace within a line to _, e.g., "ObjectDBX Classes".
# What the hell is up with this file format!
- 1 while ($dxf =~ s/([^ \t\n])[ \t]+([^ \t\n])/$1_$2/gs);
+ 1 while ($dxf =~ s/([^ \t\n])[ \t\#]+([^ \t\n])/$1_$2/gs);
$dxf =~ s/\r/\n/gs;
@@ -455,7 +455,7 @@ sub parse_dxf($$$$$) {
sub generate_c_1($$$$$@) {
- my ($name, $outfile, $smooth_p, $wireframe_p, $normalize_p, @points) = @_;
+ my ($name, $outfile, $smooth, $wireframe_p, $normalize_p, @points) = @_;
my $ccw_p = 1; # counter-clockwise winding rule for computing normals
@@ -463,8 +463,8 @@ sub generate_c_1($$$$$@) {
my $nfaces = ($wireframe_p ? $npoints/2 : $npoints/3);
my @normals;
- if ($smooth_p && !$wireframe_p) {
- @normals = compute_vertex_normals (@points);
+ if ($smooth && !$wireframe_p) {
+ @normals = compute_vertex_normals ($smooth, @points);
if ($#normals != $#points) {
error ("computed " . (($#normals+1)/3) . " normals for " .
@@ -514,7 +514,7 @@ sub generate_c_1($$$$$@) {
$nbx, $nby, $nbz,
$ncx, $ncy, $ncz);
- if ($smooth_p) {
+ if ($smooth) {
$nax = $normals[$i*9];
$nay = $normals[$i*9+1];
$naz = $normals[$i*9+2];
@@ -572,7 +572,7 @@ sub generate_c_1($$$$$@) {
sub generate_c($$$$$$) {
- my ($infile, $outfile, $smooth_p, $wireframe_p, $normalize_p, $layers) = @_;
+ my ($infile, $outfile, $smooth, $wireframe_p, $normalize_p, $layers) = @_;
my $code = '';
@@ -594,8 +594,8 @@ sub generate_c($$$$$$) {
strftime ("%d-%b-%Y", localtime ()) . ".\n" .
" " . ($wireframe_p
? "Wireframe."
- : ($smooth_p ?
- "Smoothed vertex normals." :
+ : ($smooth ?
+ "Smoothed vertex normals at $smooth\x{00B0}." :
"Faceted face normals.")) .
($normalize_p ? " Normalized to unit bounding box." : "") .
"\n" .
@@ -613,7 +613,7 @@ sub generate_c($$$$$$) {
my $name = $layer ? "${token}_${layer}" : $token;
my ($c, $np, $nf) =
generate_c_1 ($name, $outfile,
- $smooth_p, $wireframe_p, $normalize_p,
+ $smooth, $wireframe_p, $normalize_p,
@{$layers->{$layer}});
$code .= $c;
$npoints += $np;
@@ -648,7 +648,7 @@ sub cmp_files($$) {
sub dxf_to_gl($$$$$$) {
- my ($infile, $outfile, $smooth_p, $normalize_p, $wireframe_p, $layers_p) = @_;
+ my ($infile, $outfile, $smooth, $normalize_p, $wireframe_p, $layers_p) = @_;
open (my $in, "<$infile") || error ("$infile: $!");
my $filename = ($infile eq '-' ? "<stdin>" : $infile);
@@ -662,14 +662,14 @@ sub dxf_to_gl($$$$$$) {
my $data = parse_dxf ($filename, $dxf, $normalize_p, $wireframe_p, $layers_p);
$filename = ($outfile eq '-' ? "<stdout>" : $outfile);
- my $code = generate_c ($infile, $filename, $smooth_p, $wireframe_p,
+ my $code = generate_c ($infile, $filename, $smooth, $wireframe_p,
$normalize_p, $data);
if ($outfile eq '-') {
print STDOUT $code;
} else {
my $tmp = "$outfile.tmp";
- open (my $out, '>', $tmp) || error ("$tmp: $!");
+ open (my $out, '>:utf8', $tmp) || error ("$tmp: $!");
print $out $code || error ("$filename: $!");
close $out || error ("$filename: $!");
if (cmp_files ($filename, $tmp)) {
@@ -702,7 +702,7 @@ sub usage() {
sub main() {
my ($infile, $outfile);
my $normalize_p = 0;
- my $smooth_p = 0;
+ my $smooth = 0;
my $wireframe_p = 0;
my $layers_p = 0;
while ($_ = $ARGV[0]) {
@@ -710,7 +710,14 @@ sub main() {
if ($_ eq "--verbose") { $verbose++; }
elsif (m/^-v+$/) { $verbose += length($_)-1; }
elsif ($_ eq "--normalize") { $normalize_p = 1; }
- elsif ($_ eq "--smooth") { $smooth_p = 1; }
+ elsif ($_ eq "--smooth") {
+ if ($ARGV[0] && $ARGV[0] =~ m/^(\d[\d.]*)%?$/s) {
+ $smooth = 0 + $1;
+ shift @ARGV;
+ } else {
+ $smooth = 30;
+ }
+ }
elsif ($_ eq "--wireframe") { $wireframe_p = 1; }
elsif ($_ eq "--layers") { $layers_p = 1; }
elsif (m/^-./) { usage; }
@@ -722,7 +729,7 @@ sub main() {
$infile = "-" unless defined ($infile);
$outfile = "-" unless defined ($outfile);
- dxf_to_gl ($infile, $outfile, $smooth_p, $normalize_p, $wireframe_p, $layers_p);
+ dxf_to_gl ($infile, $outfile, $smooth, $normalize_p, $wireframe_p, $layers_p);
}
main;
diff --git a/hacks/glx/dymaxionmap.c b/hacks/glx/dymaxionmap.c
index 711db2e..41de703 100644
--- a/hacks/glx/dymaxionmap.c
+++ b/hacks/glx/dymaxionmap.c
@@ -277,6 +277,7 @@ create_daylight_mask (Display *dpy, Visual *v, int w, int h)
{
XImage *image = XCreateImage (dpy, v, 8, ZPixmap, 0, 0, w, h, 8, 0);
int x, y;
+# undef sun /* Doh */
XYZ sun;
double axial_tilt = frand(23.4) / (180/M_PI) * RANDSIGN();
double dusk = M_PI * 0.035;
@@ -1422,7 +1423,7 @@ draw_planet (ModeInfo * mi)
glDrawBuffer(GL_BACK);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glXMakeCurrent (dpy, window, *(gp->glx_context));
+ glXMakeCurrent (dpy, window, *gp->glx_context);
mi->polygon_count = 0;
@@ -1631,21 +1632,28 @@ free_planet (ModeInfo * mi)
planetstruct *gp = &planets[MI_SCREEN(mi)];
int i;
+ if (!gp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
+
+ if (gp->font_data) free_texture_font (gp->font_data);
+ if (gp->trackball) gltrackball_free (gp->trackball);
+ if (gp->rot) free_rotator (gp->rot);
+ if (gp->rot2) free_rotator (gp->rot2);
+
if (gp->day) XDestroyImage (gp->day);
if (gp->night) XDestroyImage (gp->night);
if (gp->dusk) XDestroyImage (gp->dusk);
if (gp->cvt) XDestroyImage (gp->cvt);
- for (i = 0; i < gp->nimages; i++)
- if (gp->images[i]) XDestroyImage (gp->images[i]);
- free (gp->images);
-
- if (gp->glx_context) {
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context));
-
- if (glIsList(gp->starlist))
- glDeleteLists(gp->starlist, 1);
+ if (gp->images) {
+ for (i = 0; i < gp->nimages; i++)
+ if (gp->images[i]) XDestroyImage (gp->images[i]);
+ free (gp->images);
}
+
+ if (glIsList(gp->starlist)) glDeleteLists(gp->starlist, 1);
+ if (gp->tex1) glDeleteTextures (1, &gp->tex1);
+ if (gp->tex2) glDeleteTextures (1, &gp->tex2);
}
diff --git a/hacks/glx/endgame.c b/hacks/glx/endgame.c
index ddba7f9..cc5f22c 100644
--- a/hacks/glx/endgame.c
+++ b/hacks/glx/endgame.c
@@ -20,7 +20,6 @@
"*showFPS: False \n" \
"*wireframe: False \n" \
-# define free_chess 0
# define release_chess 0
# include "xlockmore.h"
@@ -894,7 +893,7 @@ ENTRYPOINT void draw_chess(ModeInfo *mi)
if(!cs->glx_context)
return;
- glXMakeCurrent(disp, w, *(cs->glx_context));
+ glXMakeCurrent(disp, w, *cs->glx_context);
/** code for moving a piece */
if(cs->moving && ++cs->steps == 100) {
@@ -966,6 +965,22 @@ ENTRYPOINT void draw_chess(ModeInfo *mi)
glXSwapBuffers(disp, w);
}
+
+ENTRYPOINT void free_chess(ModeInfo *mi)
+{
+ Chesscreen *cs = &qs[MI_SCREEN(mi)];
+ int i;
+ if (!cs->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cs->glx_context);
+ gltrackball_free (cs->trackball);
+ if (cs->piecetexture) glDeleteTextures (1, &cs->piecetexture);
+ if (cs->boardtexture) glDeleteTextures (1, &cs->boardtexture);
+
+ /* this is horrible! List numbers are hardcoded! */
+ for (i = 1; i <= 20; i++)
+ if (glIsList(i)) glDeleteLists(i, 1);
+}
+
XSCREENSAVER_MODULE_2 ("Endgame", endgame, chess)
#endif
diff --git a/hacks/glx/energystream.c b/hacks/glx/energystream.c
index 7221f0d..cc8b5b2 100644
--- a/hacks/glx/energystream.c
+++ b/hacks/glx/energystream.c
@@ -367,16 +367,19 @@ free_stream (ModeInfo * mi)
stream_configuration *es = &ess[MI_SCREEN(mi)];
int i;
- if (es->glx_context) {
- glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *(es->glx_context));
+ if (!es->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *es->glx_context);
- for (i = 0; i < es->num_streams; i++) {
- free (es->streams[i].flares);
- glDeleteTextures (1, &es->streams[i].flare_tex);
- }
+ if (es->trackball) gltrackball_free (es->trackball);
+ if (es->rot) free_rotator (es->rot);
- free (es->streams);
+ for (i = 0; i < es->num_streams; i++) {
+ free (es->streams[i].flares);
+ glDeleteTextures (1, &es->streams[i].flare_tex);
}
+
+ if (es->streams) free (es->streams);
+
}
@@ -438,7 +441,7 @@ draw_stream (ModeInfo *mi)
cur_time = (float)(GETSECS(current_time) * 1000 + GETMSECS(current_time) - es->start_time) / 1000.0;
cur_time *= global_speed;
- glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *(es->glx_context));
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *es->glx_context);
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
diff --git a/hacks/glx/engine.c b/hacks/glx/engine.c
index 0f39b8d..ba30d81 100644
--- a/hacks/glx/engine.c
+++ b/hacks/glx/engine.c
@@ -27,7 +27,6 @@
"*suppressRotationAnimation: True\n" \
"*titleFont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n" \
-# define free_engine 0
# define release_engine 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
@@ -985,7 +984,7 @@ ENTRYPOINT void draw_engine(ModeInfo *mi)
if (!e->glx_context)
return;
- glXMakeCurrent(disp, w, *(e->glx_context));
+ glXMakeCurrent(disp, w, *e->glx_context);
mi->polygon_count = display(mi);
@@ -1001,6 +1000,20 @@ ENTRYPOINT void draw_engine(ModeInfo *mi)
glXSwapBuffers(disp, w);
}
+
+ENTRYPOINT void free_engine(ModeInfo *mi)
+{
+ Engine *e = &engine[MI_SCREEN(mi)];
+ if (!e->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *e->glx_context);
+ if (e->font_data) free_texture_font (e->font_data);
+ free (e->engine_name);
+ gltrackball_free (e->trackball);
+ free_rotator (e->rot);
+ if (glIsList(e->piston_list)) glDeleteLists(e->piston_list, 1);
+ if (glIsList(e->shaft_list)) glDeleteLists(e->shaft_list, 1);
+}
+
XSCREENSAVER_MODULE ("Engine", engine)
#endif
diff --git a/hacks/glx/esper.c b/hacks/glx/esper.c
index 7a0bb0b..e7d85a9 100644
--- a/hacks/glx/esper.c
+++ b/hacks/glx/esper.c
@@ -147,7 +147,6 @@
"*reticleColor: #FFFF77\n" \
"*textColor: #FFFFBB\n" \
-# define free_esper 0
# define refresh_esper 0
# define release_esper 0
# include "xlockmore.h"
@@ -2327,6 +2326,7 @@ parse_color (ModeInfo *mi, char *key, GLfloat color[4])
key, string);
exit (1);
}
+ free (string);
color[0] = xcolor.red / 65536.0;
color[1] = xcolor.green / 65536.0;
@@ -2390,7 +2390,7 @@ draw_esper (ModeInfo *mi)
if (!ss->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
mi->polygon_count = 0;
@@ -2407,6 +2407,31 @@ draw_esper (ModeInfo *mi)
glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi));
}
+
+ENTRYPOINT void
+free_esper (ModeInfo *mi)
+{
+ esper_state *ss = &sss[MI_SCREEN(mi)];
+ int i;
+ if (!ss->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
+
+ if (ss->font_data) free_texture_font (ss->font_data);
+ for (i = 0; i < ss->nimages; i++) {
+ if (ss->images[i]) {
+ if (ss->images[i]->title) free (ss->images[i]->title);
+ if (ss->images[i]->texid) glDeleteTextures (1, &ss->images[i]->texid);
+ free (ss->images[i]);
+ }
+ }
+ for (i = 0; i < countof(ss->sprites); i++) {
+ if (ss->sprites[i]) {
+ if (ss->sprites[i]->text) free (ss->sprites[i]->text);
+ if (ss->sprites[i]) free (ss->sprites[i]);
+ }
+ }
+}
+
XSCREENSAVER_MODULE ("Esper", esper)
#endif /* USE_GL */
diff --git a/hacks/glx/extrusion.c b/hacks/glx/extrusion.c
index 3dee71c..f8aaeb5 100644
--- a/hacks/glx/extrusion.c
+++ b/hacks/glx/extrusion.c
@@ -31,7 +31,6 @@
"*showFPS: False \n" \
"*wireframe: False \n"
-# define free_extrusion 0
# define release_extrusion 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
@@ -314,7 +313,7 @@ draw_extrusion(ModeInfo * mi)
if (!gp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
glPushMatrix();
@@ -551,6 +550,17 @@ init_extrusion (ModeInfo * mi)
}
+
+ENTRYPOINT void
+free_extrusion (ModeInfo * mi)
+{
+ extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)];
+ if (!gp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
+ if (gp->trackball) gltrackball_free (gp->trackball);
+ if (gp->rot) free_rotator (gp->rot);
+}
+
XSCREENSAVER_MODULE ("Extrusion", extrusion)
#endif /* USE_GL */
diff --git a/hacks/glx/flipflop.c b/hacks/glx/flipflop.c
index c26458c..fe1643b 100644
--- a/hacks/glx/flipflop.c
+++ b/hacks/glx/flipflop.c
@@ -456,7 +456,7 @@ draw_flipflop(ModeInfo *mi)
if(!c->glx_context || (textured && !c->got_texture))
return;
- glXMakeCurrent(disp, w, *(c->glx_context));
+ glXMakeCurrent(disp, w, *c->glx_context);
mi->polygon_count = display(mi);
@@ -474,10 +474,14 @@ ENTRYPOINT void
free_flipflop(ModeInfo *mi)
{
Flipflopcreen *c = &qs[MI_SCREEN(mi)];
+ if (!c->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *c->glx_context);
+ if(c->trackball) gltrackball_free(c->trackball);
if (c->sheet) {
randsheet_free(c->sheet);
free (c->sheet);
}
+ if (c->texid) glDeleteTextures (1, &c->texid);
}
/*** ADDED RANDSHEET FUNCTIONS ***/
diff --git a/hacks/glx/flipscreen3d.c b/hacks/glx/flipscreen3d.c
index e4db5df..ce3dc76 100644
--- a/hacks/glx/flipscreen3d.c
+++ b/hacks/glx/flipscreen3d.c
@@ -21,7 +21,6 @@
"*useSHM: True \n" \
"*suppressRotationAnimation: True\n" \
-# define free_screenflip 0
# define release_screenflip 0
# include "xlockmore.h" /* from the xscreensaver distribution */
# include "gltrackball.h"
@@ -499,7 +498,7 @@ ENTRYPOINT void draw_screenflip(ModeInfo *mi)
if (c->waiting_for_image_p && c->first_image_p)
return;
- glXMakeCurrent(disp, w, *(c->glx_context));
+ glXMakeCurrent(disp, w, *c->glx_context);
glBindTexture(GL_TEXTURE_2D, c->texid);
@@ -513,6 +512,16 @@ ENTRYPOINT void draw_screenflip(ModeInfo *mi)
glXSwapBuffers(disp, w);
}
+
+ENTRYPOINT void free_screenflip(ModeInfo *mi)
+{
+ Screenflip *c = &screenflip[MI_SCREEN(mi)];
+ if (!c->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *c->glx_context);
+ gltrackball_free (c->trackball);
+ if (c->texid) glDeleteTextures (1, &c->texid);
+}
+
XSCREENSAVER_MODULE_2 ("FlipScreen3D", flipscreen3d, screenflip)
#endif
diff --git a/hacks/glx/fliptext.c b/hacks/glx/fliptext.c
index c233e8b..951c188 100644
--- a/hacks/glx/fliptext.c
+++ b/hacks/glx/fliptext.c
@@ -798,6 +798,7 @@ ENTRYPOINT void
init_fliptext (ModeInfo *mi)
{
int wire = MI_IS_WIREFRAME(mi);
+ char *s;
fliptext_configuration *sc;
@@ -897,9 +898,9 @@ init_fliptext (ModeInfo *mi)
if (min_lines > max_lines - 3) min_lines = max_lines - 4;
if (min_lines < 1) min_lines = 1;
- parse_color (mi, "foreground",
- get_string_resource(mi->dpy, "foreground", "Foreground"),
- sc->color);
+ s = get_string_resource(mi->dpy, "foreground", "Foreground");
+ parse_color (mi, "foreground", s, sc->color);
+ if (s) free (s);
sc->top_margin = (sc->char_width * 100);
sc->bottom_margin = -sc->top_margin;
@@ -919,7 +920,7 @@ draw_fliptext (ModeInfo *mi)
if (!sc->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sc->glx_context);
#if 0
if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput))
@@ -989,11 +990,18 @@ ENTRYPOINT void
free_fliptext (ModeInfo *mi)
{
fliptext_configuration *sc = &scs[MI_SCREEN(mi)];
+ int i;
+ if (!sc->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sc->glx_context);
if (sc->tc)
textclient_close (sc->tc);
- free(sc->lines);
-
- /* #### there's more to free here */
+ if (sc->texfont) free_texture_font (sc->texfont);
+ for (i = 0; i < sc->nlines; i++)
+ if (sc->lines[i]) {
+ if (sc->lines[i]->text) free (sc->lines[i]->text);
+ free (sc->lines[i]);
+ }
+ if(sc->lines) free(sc->lines);
}
XSCREENSAVER_MODULE ("FlipText", fliptext)
diff --git a/hacks/glx/flurry-texture.c b/hacks/glx/flurry-texture.c
index c787f59..f1b7e36 100644
--- a/hacks/glx/flurry-texture.c
+++ b/hacks/glx/flurry-texture.c
@@ -53,7 +53,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
static GLubyte smallTextureArray[32][32];
static GLubyte bigTextureArray[256][256][2];
-GLuint theTexture = 0;
/* simple smoothing routine */
static void SmoothTexture(void)
@@ -187,8 +186,9 @@ static void AverageLastAndFirstTextures(void)
}
}
-void MakeTexture()
+GLuint MakeTexture(void)
{
+ GLuint theTexture = 0;
int i,j;
for (i=0;i<8;i++)
{
@@ -221,4 +221,5 @@ void MakeTexture()
gluBuild2DMipmaps(GL_TEXTURE_2D, 2, 256, 256, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, bigTextureArray);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ return theTexture;
}
diff --git a/hacks/glx/flurry.c b/hacks/glx/flurry.c
index c9008a9..a236f52 100644
--- a/hacks/glx/flurry.c
+++ b/hacks/glx/flurry.c
@@ -90,6 +90,7 @@ ModStruct flurry_description = {
global_info_t *flurry_info = NULL;
+
static
double currentTime(void) {
struct timeval tv;
@@ -313,7 +314,7 @@ ENTRYPOINT void reshape_flurry(ModeInfo *mi, int width, int height)
{
global_info_t *global = flurry_info + MI_SCREEN(mi);
- glXMakeCurrent(MI_DISPLAY(mi), global->window, *(global->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), global->window, *global->glx_context);
glViewport(0.0, 0.0, width, height);
glMatrixMode(GL_PROJECTION);
@@ -506,11 +507,11 @@ draw_flurry(ModeInfo * mi)
return;
if (global->first) {
- MakeTexture();
+ global->texid = MakeTexture();
global->first = 0;
}
glDrawBuffer(GL_BACK);
- glXMakeCurrent(display, window, *(global->glx_context));
+ glXMakeCurrent(display, window, *global->glx_context);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@@ -535,13 +536,12 @@ free_flurry(ModeInfo * mi)
global_info_t *global = &flurry_info[MI_SCREEN(mi)];
flurry_info_t *flurry;
- if (global->glx_context) {
- glXMakeCurrent(MI_DISPLAY(mi), global->window, *(global->glx_context));
- }
+ if (!global->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), global->window, *global->glx_context);
- for (flurry = global->flurry; flurry; flurry=flurry->next) {
- delete_flurry_info(flurry);
- }
+ for (flurry = global->flurry; flurry; flurry=flurry->next)
+ delete_flurry_info(flurry);
+ if (global->texid) glDeleteTextures (1, &global->texid);
}
XSCREENSAVER_MODULE ("Flurry", flurry)
diff --git a/hacks/glx/flurry.h b/hacks/glx/flurry.h
index 9bbe4b2..b4c7787 100644
--- a/hacks/glx/flurry.h
+++ b/hacks/glx/flurry.h
@@ -211,7 +211,7 @@ static vector float FastDistance2DV(vector float x, vector float y) {
extern GLuint theTexture;
-void MakeTexture(void);
+GLuint MakeTexture(void);
#define OPT_MODE_SCALAR_BASE 0x0
@@ -290,6 +290,7 @@ struct _global_info_t {
double oldFrameTime;
flurry_info_t *flurry;
+ GLuint texid;
};
#define kNumSpectrumEntries 512
diff --git a/hacks/glx/flyingtoasters.c b/hacks/glx/flyingtoasters.c
index 19a5897..a527e8b 100644
--- a/hacks/glx/flyingtoasters.c
+++ b/hacks/glx/flyingtoasters.c
@@ -32,7 +32,6 @@
/* #define DEBUG */
-# define free_toasters 0
# define release_toasters 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -796,7 +795,7 @@ draw_toasters (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -863,6 +862,27 @@ draw_toasters (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_toasters (ModeInfo *mi)
+{
+ toaster_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+ if (bp->dlists) free (bp->dlists);
+ if (bp->floaters) free (bp->floaters);
+ if (bp->user_trackball) gltrackball_free (bp->user_trackball);
+ for (i = 0; i < countof(all_objs); i++)
+ if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+ if (bp->toast_texture) glDeleteTextures (1, &bp->toast_texture);
+# ifndef HAVE_JWZGLES
+ if (bp->chrome_texture) glDeleteTextures (1, &bp->chrome_texture);
+# endif
+}
+
XSCREENSAVER_MODULE_2 ("FlyingToasters", flyingtoasters, toasters)
#endif /* USE_GL */
diff --git a/hacks/glx/fps-gl.c b/hacks/glx/fps-gl.c
index eb6b6de..b8cbb25 100644
--- a/hacks/glx/fps-gl.c
+++ b/hacks/glx/fps-gl.c
@@ -1,4 +1,4 @@
-/* fps, Copyright (c) 2001-2015 Jamie Zawinski <jwz@jwz.org>
+/* fps, Copyright (c) 2001-2018 Jamie Zawinski <jwz@jwz.org>
* Draw a frames-per-second display (Xlib and OpenGL).
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -96,3 +96,16 @@ xlockmore_gl_draw_fps (ModeInfo *mi)
st->string);
}
}
+
+void
+xlockmore_gl_free_fps (fps_state *st)
+{
+ gl_fps_data *data = (gl_fps_data *) st->gl_fps_data;
+ if (data)
+ {
+ if (data->texfont) free_texture_font (data->texfont);
+ free (data);
+ st->gl_fps_data = 0;
+ }
+ fps_free (st);
+}
diff --git a/hacks/glx/gears.c b/hacks/glx/gears.c
index 3976f2f..feaae8c 100644
--- a/hacks/glx/gears.c
+++ b/hacks/glx/gears.c
@@ -18,7 +18,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_gears 0
# define release_gears 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -827,7 +826,7 @@ draw_gears (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glShadeModel(GL_SMOOTH);
@@ -933,6 +932,24 @@ gears_handle_event (ModeInfo *mi, XEvent *event)
return False;
}
+
+ENTRYPOINT void
+free_gears (ModeInfo *mi)
+{
+ gears_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ for (i = 0; i < bp->ngears; i++)
+ if (bp->gears[i])
+ free_gear (bp->gears[i]);
+ if (glIsList(bp->armature_dlist))
+ glDeleteLists (bp->armature_dlist, 1);
+
+}
+
XSCREENSAVER_MODULE ("Gears", gears)
#endif /* USE_GL */
diff --git a/hacks/glx/geodesic.c b/hacks/glx/geodesic.c
index 9ef2696..83fd4ac 100644
--- a/hacks/glx/geodesic.c
+++ b/hacks/glx/geodesic.c
@@ -14,7 +14,6 @@
"*showFPS: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_geodesic 0
# define release_geodesic 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -625,7 +624,7 @@ draw_geodesic (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
if (! wire)
glShadeModel(GL_SMOOTH);
@@ -811,6 +810,18 @@ draw_geodesic (ModeInfo *mi)
}
}
+
+ENTRYPOINT void
+free_geodesic (ModeInfo *mi)
+{
+ geodesic_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->colors) free (bp->colors);
+}
+
XSCREENSAVER_MODULE ("Geodesic", geodesic)
#endif /* USE_GL */
diff --git a/hacks/glx/geodesicgears.c b/hacks/glx/geodesicgears.c
index ecc7f26..3911b38 100644
--- a/hacks/glx/geodesicgears.c
+++ b/hacks/glx/geodesicgears.c
@@ -1325,7 +1325,7 @@ reshape_geodesic (ModeInfo *mi, int width, int height)
h = height / (GLfloat) width;
}
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glViewport (0, y, (GLint) width, (GLint) height);
@@ -1527,7 +1527,7 @@ draw_geodesic (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
if (bp->draw_time == 0)
@@ -1790,11 +1790,13 @@ free_geodesic (ModeInfo *mi)
geodesic_configuration *bp = &bps[MI_SCREEN(mi)];
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
- free_texture_font (bp->font);
- free (bp->colors);
- free_sphere_gears (mi);
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->font) free_texture_font (bp->font);
+ if (bp->colors) free (bp->colors);
+ if (mi) free_sphere_gears (mi);
if (bp->desc) free (bp->desc);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
}
diff --git a/hacks/glx/gflux.c b/hacks/glx/gflux.c
index dbbb11c..63c9676 100644
--- a/hacks/glx/gflux.c
+++ b/hacks/glx/gflux.c
@@ -46,7 +46,6 @@
"*useSHM: True \n" \
"*suppressRotationAnimation: True\n" \
-# define free_gflux 0
# define release_gflux 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
@@ -275,7 +274,7 @@ ENTRYPOINT void draw_gflux(ModeInfo * mi)
/* Just keep running before the texture has come in. */
/* if (gp->waiting_for_image_p) return; */
- glXMakeCurrent(display, window, *(gp->glx_context));
+ glXMakeCurrent(display, window, *gp->glx_context);
calcGrid(gp);
mi->polygon_count = gp->drawFunc(gp);
@@ -382,6 +381,7 @@ ENTRYPOINT void init_gflux(ModeInfo * mi)
progname, s);
exit (1);
}
+ if (s) free (s);
}
gp->modeinfo = mi;
@@ -394,6 +394,14 @@ ENTRYPOINT void init_gflux(ModeInfo * mi)
}
}
+ENTRYPOINT void free_gflux(ModeInfo * mi)
+{
+ gfluxstruct *gp = &gfluxes[MI_SCREEN(mi)];
+ if (!gp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
+ gltrackball_free (gp->trackball);
+ if (gp->texName) glDeleteTextures (1, &gp->texName);
+}
static void createTexture(gfluxstruct *gp)
{
diff --git a/hacks/glx/glblur.c b/hacks/glx/glblur.c
index cee020c..d1514d1 100644
--- a/hacks/glx/glblur.c
+++ b/hacks/glx/glblur.c
@@ -27,7 +27,6 @@
"*fpsSolid: True \n" \
"*suppressRotationAnimation: True\n" \
-# define free_glblur 0
# define release_glblur 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -483,7 +482,7 @@ draw_glblur (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
/* Decide what we're drawing
*/
@@ -605,6 +604,29 @@ draw_glblur (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_glblur (ModeInfo *mi)
+{
+ glblur_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->tex_data) free (bp->tex_data);
+ if (bp->colors0) free (bp->colors0);
+ if (bp->colors1) free (bp->colors1);
+ if (bp->colors2) free (bp->colors2);
+ if (bp->colors3) free (bp->colors3);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (glIsList(bp->obj_dlist0)) glDeleteLists(bp->obj_dlist0, 1);
+ if (glIsList(bp->obj_dlist1)) glDeleteLists(bp->obj_dlist1, 1);
+ if (glIsList(bp->obj_dlist2)) glDeleteLists(bp->obj_dlist2, 1);
+ if (glIsList(bp->obj_dlist3)) glDeleteLists(bp->obj_dlist3, 1);
+ if (glIsList(bp->scene_dlist1)) glDeleteLists(bp->scene_dlist1, 1);
+ if (glIsList(bp->scene_dlist2)) glDeleteLists(bp->scene_dlist2, 1);
+ if (bp->texture) glDeleteTextures (1, &bp->texture);
+}
+
XSCREENSAVER_MODULE ("GLBlur", glblur)
#endif /* USE_GL */
diff --git a/hacks/glx/glcells.c b/hacks/glx/glcells.c
index adf9866..b8ee5b8 100644
--- a/hacks/glx/glcells.c
+++ b/hacks/glx/glcells.c
@@ -905,6 +905,9 @@ static int create_list( State *st, double fac )
glNormalPointer( GL_FLOAT, 0, vertex_array->normal );
glDrawElements( GL_TRIANGLES, vertex_array->num_index,
GL_UNSIGNED_INT, vertex_array->index );
+ free (vertex_array->vertex);
+ free (vertex_array->normal);
+ free (vertex_array->index);
free( vertex_array );
#else
glBegin( GL_TRIANGLES );
@@ -1349,8 +1352,7 @@ draw_glcells( ModeInfo *mi )
if (!st->glx_context) return;
- glXMakeCurrent( MI_DISPLAY(mi), MI_WINDOW(mi),
- *(st->glx_context) );
+ glXMakeCurrent( MI_DISPLAY(mi), MI_WINDOW(mi), *st->glx_context);
mi->polygon_count = render( st );
@@ -1366,23 +1368,21 @@ free_glcells( ModeInfo *mi )
int i;
State *st = &sstate[MI_SCREEN(mi)];
- if (st->glx_context) {
- glXMakeCurrent( MI_DISPLAY(mi), MI_WINDOW(mi),
- *(st->glx_context) );
-
- /* nuke everything before exit */
- if (st->sphere) free_Object( st->sphere );
- if (st->food) free( st->food );
- for (i=0; i<NUM_CELL_SHAPES; ++i) {
- if (st->cell_list[i] != -1) {
- glDeleteLists( st->cell_list[i], 1 );
- }
+ if (!st->glx_context) return;
+ glXMakeCurrent( MI_DISPLAY(mi), MI_WINDOW(mi), *st->glx_context);
+
+ if (st->sphere) free_Object( st->sphere );
+ if (st->food) free( st->food );
+ for (i=0; i<NUM_CELL_SHAPES; ++i) {
+ if (st->cell_list[i] != -1) {
+ glDeleteLists( st->cell_list[i], 1 );
}
- if (st->cell) free( st->cell );
- free( st->disturbance );
- glDeleteTextures( 1, &st->texture_name );
- free( st->texture );
}
+ if (st->cell) free( st->cell );
+ free( st->disturbance );
+ glDeleteTextures( 1, &st->texture_name );
+ free( st->texture );
+ if (glIsList(st->nucleus_list)) glDeleteLists(st->nucleus_list, 1);
}
XSCREENSAVER_MODULE( "GLCells", glcells )
diff --git a/hacks/glx/gleidescope.c b/hacks/glx/gleidescope.c
index ec33388..60faf3e 100644
--- a/hacks/glx/gleidescope.c
+++ b/hacks/glx/gleidescope.c
@@ -1405,7 +1405,7 @@ ENTRYPOINT void reshape_gleidescope(ModeInfo *mi, int width, int height)
h = height / (GLfloat) width;
}
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
glViewport(0, y, (GLint) width, (GLint) height);
glMatrixMode(GL_PROJECTION);
@@ -1574,7 +1574,7 @@ draw_gleidescope(ModeInfo * mi)
glDrawBuffer(GL_BACK);
- glXMakeCurrent(display, window, *(gp->glx_context));
+ glXMakeCurrent(display, window, *gp->glx_context);
draw(mi);
if (mi->fps_p) {
@@ -1608,15 +1608,12 @@ draw_gleidescope(ModeInfo * mi)
ENTRYPOINT void
free_gleidescope(ModeInfo * mi)
{
- gleidestruct *gp = &gleidescope[MI_SCREEN(mi)];
-
- /* acd - is this needed? */
- if (gp->glx_context) {
- /* Display lists MUST be freed while their glXContext is current. */
- glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
-
- /* acd - was code here for freeing things that are no longer in struct */
- }
+ gleidestruct *gp = &gleidescope[MI_SCREEN(mi)];
+ if (!gp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
+ if (glIsList(gp->list)) glDeleteLists(gp->list, 1);
+ if (gp->textures[0].id) glDeleteTextures (1, &gp->textures[0].id);
+ if (gp->textures[1].id) glDeleteTextures (1, &gp->textures[1].id);
}
XSCREENSAVER_MODULE ("Gleidescope", gleidescope)
diff --git a/hacks/glx/glforestfire.c b/hacks/glx/glforestfire.c
index bcc9ed7..8aa1c97 100644
--- a/hacks/glx/glforestfire.c
+++ b/hacks/glx/glforestfire.c
@@ -885,6 +885,9 @@ free_fire(ModeInfo * mi)
{
firestruct *fs = &fire[MI_SCREEN(mi)];
+ if (!fs->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *fs->glx_context);
+
if (mode_font != None && fs->fontbase != None) {
glDeleteLists(fs->fontbase, mode_font->max_char_or_byte2 -
mode_font->min_char_or_byte2 + 1);
@@ -892,15 +895,15 @@ free_fire(ModeInfo * mi)
}
if (fs->p != NULL) {
- (void) free((void *) fs->p);
+ free(fs->p);
fs->p = (part *) NULL;
}
if (fs->r != NULL) {
- (void) free((void *) fs->r);
+ free(fs->r);
fs->r = (rain *) NULL;
}
if (fs->treepos != NULL) {
- (void) free((void *) fs->treepos);
+ free(fs->treepos);
fs->treepos = (treestruct *) NULL;
}
if (fs->ttexture != None) {
@@ -913,6 +916,8 @@ free_fire(ModeInfo * mi)
XDestroyImage(fs->gtexture);
fs->gtexture = None;
}
+
+ if (fs->trackball) gltrackball_free (fs->trackball);
}
/*
@@ -989,7 +994,7 @@ ENTRYPOINT void draw_fire(ModeInfo * mi)
if (!fs->glx_context)
return;
- glXMakeCurrent(display, window, *(fs->glx_context));
+ glXMakeCurrent(display, window, *fs->glx_context);
glShadeModel(GL_FLAT);
glEnable(GL_DEPTH_TEST);
@@ -1064,7 +1069,7 @@ ENTRYPOINT void change_fire(ModeInfo * mi)
if (!fs->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(fs->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *fs->glx_context);
/* if available, randomly change some values */
if (do_fog)
diff --git a/hacks/glx/glhanoi.c b/hacks/glx/glhanoi.c
index 865930f..eaf775f 100644
--- a/hacks/glx/glhanoi.c
+++ b/hacks/glx/glhanoi.c
@@ -1012,6 +1012,8 @@ static int drawTube(GLdouble bottomRadius, GLdouble topRadius,
glVertex3f(0.0, y, innerRadius);
glVertex3f(0.0, y, radius);
glEnd();
+ free (cosCache);
+ free (sinCache);
return polys;
}
@@ -1855,7 +1857,7 @@ ENTRYPOINT void reshape_glhanoi(ModeInfo * mi, int width, int height)
h = height / (GLfloat) width;
}
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(glhanoi->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *glhanoi->glx_context);
glViewport(0, y, (GLint) width, (GLint) height);
@@ -1962,7 +1964,7 @@ ENTRYPOINT void draw_glhanoi(ModeInfo * mi)
if(!glhanoi->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(glhanoi->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *glhanoi->glx_context);
glPolygonMode(GL_FRONT, glhanoi->wire ? GL_LINE : GL_FILL);
@@ -2060,25 +2062,32 @@ ENTRYPOINT Bool glhanoi_handle_event(ModeInfo * mi, XEvent * event)
ENTRYPOINT void free_glhanoi(ModeInfo * mi)
{
+ glhcfg *glh = &glhanoi_cfg[MI_SCREEN(mi)];
int i;
int j;
- glhcfg *glh = &glhanoi_cfg[MI_SCREEN(mi)];
- if (glh->glx_context) {
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(glh->glx_context));
- glDeleteLists(glh->floorList, 1);
- glDeleteLists(glh->baseList, 1);
- glDeleteLists(glh->poleList, 1);
- glDeleteLists(glh->textureNames[0], 2);
- for(j = 0; j < glh->numberOfDisks; ++j) {
- glDeleteLists(glh->disk[j].displayList, 1);
- }
- free(glh->disk);
- for(i = 0; i < glh->numberOfPoles; i++) {
- if(glh->pole[i].data != NULL) {
- free(glh->pole[i].data);
- }
- }
- }
+
+ if (!glh->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *glh->glx_context);
+
+ free_rotator (glh->the_rotator);
+ if (glh->pole) {
+ for (i = 0; i < glh->numberOfPoles; i++)
+ if (glh->pole[i].data) free (glh->pole[i].data);
+ free (glh->pole);
+ }
+ if (glh->diskPos) free (glh->diskPos);
+ if (glh->trailQ) free (glh->trailQ);
+ if (glh->solveStack) free (glh->solveStack);
+
+ glDeleteLists(glh->floorList, 1);
+ glDeleteLists(glh->baseList, 1);
+ glDeleteLists(glh->poleList, 1);
+ glDeleteLists(glh->textureNames[0], 2);
+ for(j = 0; j < glh->numberOfDisks; ++j) {
+ glDeleteLists(glh->disk[j].displayList, 1);
+ }
+ free(glh->disk);
+ glDeleteTextures (N_TEXTURES, glh->textureNames);
}
XSCREENSAVER_MODULE ("GLHanoi", glhanoi)
diff --git a/hacks/glx/glknots.c b/hacks/glx/glknots.c
index 730cadb..06be339 100644
--- a/hacks/glx/glknots.c
+++ b/hacks/glx/glknots.c
@@ -18,7 +18,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_knot 0
# define release_knot 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -348,7 +347,7 @@ draw_knot (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
if (bp->mode == 0)
{
@@ -440,6 +439,19 @@ draw_knot (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_knot (ModeInfo *mi)
+{
+ knot_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->colors) free (bp->colors);
+ if (glIsList(bp->knot_list)) glDeleteLists(bp->knot_list, 1);
+}
+
XSCREENSAVER_MODULE_2 ("GLKnots", glknots, knot)
#endif /* USE_GL */
diff --git a/hacks/glx/glmatrix.c b/hacks/glx/glmatrix.c
index 6a9b1fe..1e1c4f6 100644
--- a/hacks/glx/glmatrix.c
+++ b/hacks/glx/glmatrix.c
@@ -20,7 +20,6 @@
"*showFPS: False \n" \
"*wireframe: False \n" \
-# define free_matrix 0
# define release_matrix 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -986,7 +985,7 @@ draw_matrix (ModeInfo *mi)
if (!mp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -1063,6 +1062,17 @@ draw_matrix (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_matrix (ModeInfo *mi)
+{
+ matrix_configuration *mp = &mps[MI_SCREEN(mi)];
+ if (!mp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+ if (mp->strips) free (mp->strips);
+ if (mp->texture) glDeleteTextures (1, &mp->texture);
+}
+
XSCREENSAVER_MODULE_2 ("GLMatrix", glmatrix, matrix)
#endif /* USE_GL */
diff --git a/hacks/glx/glplanet.c b/hacks/glx/glplanet.c
index f26a4ad..a2f6889 100644
--- a/hacks/glx/glplanet.c
+++ b/hacks/glx/glplanet.c
@@ -178,6 +178,7 @@ setup_xpm_texture (ModeInfo *mi, const unsigned char *data, unsigned long size)
GL_RGBA, GL_UNSIGNED_BYTE, image->data);
sprintf (buf, "builtin texture (%dx%d)", image->width, image->height);
check_gl_error(buf);
+ XDestroyImage (image);
}
@@ -399,7 +400,7 @@ reshape_planet (ModeInfo *mi, int width, int height)
planetstruct *gp = &planets[MI_SCREEN(mi)];
GLfloat h = (GLfloat) height / (GLfloat) width;
- glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), gp->window, *gp->glx_context);
glViewport(0, 0, (GLint) width, (GLint) height);
glMatrixMode(GL_PROJECTION);
@@ -587,7 +588,7 @@ draw_planet (ModeInfo * mi)
glDrawBuffer(GL_BACK);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glXMakeCurrent (dpy, window, *(gp->glx_context));
+ glXMakeCurrent (dpy, window, *gp->glx_context);
mi->polygon_count = 0;
@@ -831,14 +832,18 @@ free_planet (ModeInfo * mi)
{
planetstruct *gp = &planets[MI_SCREEN(mi)];
- if (gp->glx_context) {
- glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
+ if (!gp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), gp->window, *gp->glx_context);
- if (glIsList(gp->platelist))
- glDeleteLists(gp->platelist, 1);
- if (glIsList(gp->starlist))
- glDeleteLists(gp->starlist, 1);
- }
+ if (glIsList(gp->platelist)) glDeleteLists(gp->platelist, 1);
+ if (glIsList(gp->shadowlist)) glDeleteLists(gp->shadowlist, 1);
+ if (glIsList(gp->latlonglist)) glDeleteLists(gp->latlonglist, 1);
+ if (glIsList(gp->starlist)) glDeleteLists(gp->starlist, 1);
+ glDeleteTextures(1, &gp->tex1);
+ glDeleteTextures(1, &gp->tex2);
+
+ if (gp->trackball) gltrackball_free (gp->trackball);
+ if (gp->rot) free_rotator (gp->rot);
}
diff --git a/hacks/glx/glschool.c b/hacks/glx/glschool.c
index 49cfc11..6ad80a9 100644
--- a/hacks/glx/glschool.c
+++ b/hacks/glx/glschool.c
@@ -16,7 +16,6 @@
"*showFPS: False \n" \
"*wireframe: False \n" \
-#define free_glschool (0)
#define release_glschool (0)
#define glschool_handle_event (xlockmore_no_events)
@@ -124,7 +123,7 @@ reshape_glschool(ModeInfo *mi, int width, int height)
double aspect = (double)width/(double)height;
glschool_configuration *sc = &scs[MI_SCREEN(mi)];
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sc->context);
if (sc->school != (School *)0) {
glschool_setBBox(sc->school, -aspect*160, aspect*160, -130, 130, -450, -50.0);
glDeleteLists(sc->bboxList, 1);
@@ -187,7 +186,7 @@ draw_glschool(ModeInfo *mi)
return;
}
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sc->context);
mi->polygon_count = 0;
@@ -213,4 +212,20 @@ draw_glschool(ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_glschool(ModeInfo *mi)
+{
+ glschool_configuration *sc = &scs[MI_SCREEN(mi)];
+
+ if (!sc->context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sc->context);
+
+ if (sc->school) glschool_freeSchool (sc->school);
+ if (sc->colors) free (sc->colors);
+ if (glIsList(sc->bboxList)) glDeleteLists(sc->bboxList, 1);
+ if (glIsList(sc->goalList)) glDeleteLists(sc->goalList, 1);
+ if (glIsList(sc->fishList)) glDeleteLists(sc->fishList, 1);
+}
+
XSCREENSAVER_MODULE("GLSchool", glschool)
diff --git a/hacks/glx/glslideshow.c b/hacks/glx/glslideshow.c
index 64b1494..77c741c 100644
--- a/hacks/glx/glslideshow.c
+++ b/hacks/glx/glslideshow.c
@@ -78,7 +78,6 @@
"*grabDesktopImages: False \n" \
"*chooseRandomImages: True \n"
-# define free_slideshow 0
# define release_slideshow 0
# include "xlockmore.h"
@@ -1068,6 +1067,7 @@ hack_resources (void)
value.addr = buf2;
value.size = strlen(buf2);
XrmPutResource (&db, buf1, "String", &value);
+ free (val);
#endif
}
@@ -1137,7 +1137,7 @@ draw_slideshow (ModeInfo *mi)
if (!ss->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
if (ss->awaiting_first_image_p)
{
@@ -1217,6 +1217,28 @@ draw_slideshow (ModeInfo *mi)
check_fps (mi);
}
+
+ENTRYPOINT void
+free_slideshow (ModeInfo *mi)
+{
+ slideshow_state *ss = &sss[MI_SCREEN(mi)];
+ int i;
+ if (!ss->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
+
+ if (ss->font_data) free_texture_font (ss->font_data);
+ for (i = 0; i < ss->nimages; i++) {
+ if (ss->images[i]) {
+ if (ss->images[i]->title) free (ss->images[i]->title);
+ if (ss->images[i]->texid) glDeleteTextures (1, &ss->images[i]->texid);
+ free (ss->images[i]);
+ }
+ }
+ for (i = 0; i < countof(ss->sprites); i++) {
+ if (ss->sprites[i]) free (ss->sprites[i]);
+ }
+}
+
XSCREENSAVER_MODULE_2 ("GLSlideshow", glslideshow, slideshow)
#endif /* USE_GL */
diff --git a/hacks/glx/glsnake.c b/hacks/glx/glsnake.c
index 5f20421..8efc681 100644
--- a/hacks/glx/glsnake.c
+++ b/hacks/glx/glsnake.c
@@ -144,7 +144,6 @@ static GLfloat angvel;
#define glsnake_init init_glsnake
#define glsnake_display draw_glsnake
#define glsnake_reshape reshape_glsnake
-#define free_glsnake 0
#define release_glsnake 0
#define glsnake_handle_event xlockmore_no_events
@@ -2176,7 +2175,7 @@ ENTRYPOINT void glsnake_display(
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
#endif
gl_init(mi);
@@ -2334,6 +2333,20 @@ ENTRYPOINT void glsnake_display(
#endif
}
+
+#ifndef HAVE_GLUT
+ENTRYPOINT void free_glsnake(ModeInfo * mi)
+{
+ struct glsnake_cfg * bp = &glc[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->font_data) free_texture_font (bp->font_data);
+ if (glIsList(bp->node_solid)) glDeleteLists(bp->node_solid, 1);
+ if (glIsList(bp->node_wire)) glDeleteLists(bp->node_wire, 1);
+}
+#endif
+
+
#ifdef HAVE_GLUT
/* anything that needs to be cleaned up goes here */
static void unmain()
diff --git a/hacks/glx/gltext.c b/hacks/glx/gltext.c
index 276c448..ab5a512 100644
--- a/hacks/glx/gltext.c
+++ b/hacks/glx/gltext.c
@@ -573,7 +573,7 @@ draw_text (ModeInfo *mi)
if (!tp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tp->glx_context);
if (tp->reload)
{
@@ -650,8 +650,18 @@ ENTRYPOINT void
free_text(ModeInfo * mi)
{
text_configuration *tp = &tps[MI_SCREEN(mi)];
+
+ if (!tp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tp->glx_context);
+
if (tp->tc)
textclient_close (tp->tc);
+ if (tp->text) free (tp->text);
+ if (tp->trackball) gltrackball_free (tp->trackball);
+ if (tp->rot) free_rotator (tp->rot);
+ if (tp->rot2) free_rotator (tp->rot2);
+ if (tp->colors) free (tp->colors);
+ if (glIsList(tp->text_list)) glDeleteLists(tp->text_list, 1);
}
diff --git a/hacks/glx/gltrackball.c b/hacks/glx/gltrackball.c
index 57b4b99..9e3314c 100644
--- a/hacks/glx/gltrackball.c
+++ b/hacks/glx/gltrackball.c
@@ -76,6 +76,13 @@ gltrackball_init (int ignore_device_rotation_p)
return ts;
}
+void
+gltrackball_free (trackball_state *ts)
+{
+ free (ts);
+}
+
+
/* Device rotation interacts very strangely with mouse positions.
I'm not entirely sure this is the right fix.
*/
diff --git a/hacks/glx/gltrackball.h b/hacks/glx/gltrackball.h
index ba9e574..2ccfb9a 100644
--- a/hacks/glx/gltrackball.h
+++ b/hacks/glx/gltrackball.h
@@ -19,6 +19,7 @@ typedef struct trackball_state trackball_state;
to make dragging the mouse on the window of a GL program do the right thing.
*/
extern trackball_state *gltrackball_init (int ignore_device_rotation_p);
+extern void gltrackball_free (trackball_state *);
/* Begin tracking the mouse: Call this when the mouse button goes down.
x and y are the mouse position relative to the window.
diff --git a/hacks/glx/handsy.c b/hacks/glx/handsy.c
new file mode 100644
index 0000000..077df76
--- /dev/null
+++ b/hacks/glx/handsy.c
@@ -0,0 +1,1175 @@
+/* handsy, Copyright (c) 2018 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#define DEFAULTS "*delay: 30000 \n" \
+ "*count: 2 \n" \
+ ".foreground: #8888CC" "\n" \
+ "*groundColor: #0000FF" "\n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n"
+
+# define release_hands 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "sphere.h"
+#include "tube.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include "gllist.h"
+#include <ctype.h>
+
+#ifdef USE_GL /* whole file */
+
+
+#define DEF_SPEED "1.0"
+#define DEF_SPIN "XY"
+#define DEF_WANDER "True"
+#define DEF_FACE_FRONT "True"
+#define DEF_DEBUG "False"
+
+extern const struct gllist
+ *handsy_model_finger_distal, *handsy_model_finger_intermediate,
+ *handsy_model_finger_proximal, *handsy_model_finger_metacarpal,
+ *handsy_model_thumb_distal, *handsy_model_thumb_proximal,
+ *handsy_model_thumb_metacarpal, *handsy_model_palm;
+static struct gllist *ground = 0;
+
+static const struct gllist * const *all_objs[] = {
+ &handsy_model_finger_distal, &handsy_model_finger_intermediate,
+ &handsy_model_finger_proximal, &handsy_model_finger_metacarpal,
+ &handsy_model_thumb_distal, &handsy_model_thumb_proximal,
+ &handsy_model_thumb_metacarpal, &handsy_model_palm,
+ (const struct gllist * const *) &ground
+};
+
+#define FINGER_DISTAL 0
+#define FINGER_INTERMEDIATE 1
+#define FINGER_PROXIMAL 2
+#define FINGER_METACARPAL 3
+#define THUMB_DISTAL 4
+#define THUMB_PROXIMAL 5
+#define THUMB_METACARPAL 6
+#define PALM 7
+#define GROUND 8
+
+
+/* 'hand_geom' describes the position and extent of the various joints.
+ 'hand' describes the current flexion of the joints in that model.
+ 'hand_anim' is a list of positions and timings describing an animation.
+ 'hands_configuration' is the usual global state structure.
+ */
+
+typedef struct {
+ double min, max; /* +- pi */
+} joint;
+
+typedef struct {
+ joint bones[4];
+ joint base;
+} finger;
+
+typedef struct {
+ finger fingers[5];
+ joint palm;
+ joint wrist1;
+ joint wrist2;
+} hand_geom;
+
+static const hand_geom human_hand = {
+ {{{{ 0.0, 1.6 }, /* thumb distal */
+ { 0.0, 1.6 }, /* thumb proximal */
+ { 0.0, 1.6 }, /* thumb metacarpal */
+ { 0.0, 0.0 }}, /* none */
+ { -1.70, 0.00 }},
+ {{{ -0.2, 1.6 }, /* index distal */
+ { -0.2, 1.6 }, /* index intermediate */
+ { -0.2, 1.6 }, /* index proximal */
+ { 0.0, 0.0 }}, /* index metacarpal */
+ { -0.25, 0.25 }},
+ {{{ -0.2, 1.6 }, /* middle distal */
+ { -0.2, 1.6 }, /* middle intermediate */
+ { -0.2, 1.6 }, /* middle proximal */
+ { 0.0, 0.0 }}, /* middle metacarpal */
+ { -0.25, 0.25 }},
+ {{{ -0.2, 1.6 }, /* ring distal */
+ { -0.2, 1.6 }, /* ring intermediate */
+ { -0.2, 1.6 }, /* ring proximal */
+ { 0.0, 0.0 }}, /* ring metacarpal */
+ { -0.25, 0.25 }},
+ {{{ -0.2, 1.6 }, /* pinky distal */
+ { -0.2, 1.6 }, /* pinky intermediate */
+ { -0.2, 1.6 }, /* pinky proximal */
+ { 0.0, 0.0 }}, /* pinky metacarpal */
+ { -0.25, 0.25 }}},
+ { -0.7, 1.5 }, /* palm (wrist up/down) */
+ { -M_PI, M_PI }, /* wrist left/right */
+ { -M_PI, M_PI }, /* wrist rotate */
+};
+
+typedef struct {
+ double joint[countof(human_hand.fingers)] /* +- pi */
+ [countof(human_hand.fingers[0].bones)];
+ double base[countof(human_hand.fingers)];
+ double wrist[3]; /* up/down, left/right, rotate */
+ double pos[3]; /* XYZ */
+ Bool sinister;
+ double alpha;
+} hand;
+
+typedef struct {
+ const hand * const dest;
+ double duration, pause;
+ double pos[3], rot[3]; /* XYZ */
+} hand_anim;
+
+typedef struct {
+ const hand_anim * const pair[2]; /* L/R */
+ double delay; /* Delay added to R */
+} hand_anim_pair;
+
+typedef struct {
+ GLXContext *glx_context;
+ rotator *rot, *rot2;
+ trackball_state *trackball;
+ Bool spinx, spiny, spinz;
+ Bool button_down_p;
+
+ const hand_geom *geom;
+ GLuint *dlists;
+ int nhands;
+
+ struct {
+ const hand_anim *anim;
+ int anim_hands; /* frames in animation */
+ int anim_hand; /* pos in anim, L/R */
+ double anim_start, anim_time;
+ double tick;
+ double delay;
+ } pair[2];
+
+ struct { hand from, to, current; } *hands;
+ GLfloat color[4];
+ Bool ringp;
+
+} hands_configuration;
+
+#include "handsy_anim.h"
+
+
+static hands_configuration *bps = NULL;
+
+static GLfloat speed;
+static char *do_spin;
+static Bool do_wander;
+static Bool face_front_p;
+static Bool debug_p;
+
+static XrmOptionDescRec opts[] = {
+ { "-speed", ".speed", XrmoptionSepArg, 0 },
+ { "-spin", ".spin", XrmoptionSepArg, 0 },
+ { "+spin", ".spin", XrmoptionNoArg, "" },
+ { "-wander", ".wander", XrmoptionNoArg, "True" },
+ { "+wander", ".wander", XrmoptionNoArg, "False" },
+ { "-front", ".faceFront", XrmoptionNoArg, "True" },
+ { "+front", ".faceFront", XrmoptionNoArg, "False" },
+ { "-debug", ".debug", XrmoptionNoArg, "True" },
+ { "+debug", ".debug", XrmoptionNoArg, "False" },
+};
+
+static argtype vars[] = {
+ {&do_spin, "spin", "Spin", DEF_SPIN, t_String},
+ {&do_wander, "wander", "Wander", DEF_WANDER, t_Bool},
+ {&face_front_p, "faceFront", "FaceFront", DEF_FACE_FRONT, t_Bool},
+ {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&debug_p, "debug", "Debug", DEF_DEBUG, t_Bool},
+};
+
+ENTRYPOINT ModeSpecOpt hands_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+/* Returns the current time in seconds as a double.
+ */
+static double
+double_time (void)
+{
+ struct timeval now;
+# ifdef GETTIMEOFDAY_TWO_ARGS
+ struct timezone tzp;
+ gettimeofday(&now, &tzp);
+# else
+ gettimeofday(&now);
+# endif
+
+ return (now.tv_sec + ((double) now.tv_usec * 0.000001));
+}
+
+
+static double
+constrain_joint (double v, double min, double max)
+{
+ if (v < min) v = min;
+ else if (v > max) v = max;
+ return v;
+}
+
+
+static void
+draw_hand (ModeInfo *mi, hand *h)
+{
+ hands_configuration *bp = &bps[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ int finger;
+ int off = h->sinister ? -1 : 1;
+ int nfingers = countof (bp->geom->fingers);
+ int nbones = countof (bp->geom->fingers[0].bones);
+
+ glLineWidth (1);
+ glPushMatrix();
+
+ glTranslatef (off * h->pos[0], h->pos[1], h->pos[2]);
+ glRotatef (h->wrist[1] * 180 / M_PI * -off, 0, 1, 0);
+ glRotatef (h->wrist[2] * 180 / M_PI * -off, 0, 0, 1);
+ glRotatef (h->wrist[0] * 180 / M_PI, 1, 0, 0);
+
+ bp->color[3] = h->alpha;
+ glColor4fv (bp->color);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bp->color);
+
+ if (!wire) glEnable (GL_BLEND);
+
+ glPushMatrix();
+ if (h->sinister)
+ {
+ glScalef (-1, 1, 1);
+ glFrontFace (GL_CW);
+ }
+ else
+ glFrontFace (GL_CCW);
+ glCallList (bp->dlists[PALM]);
+ glPopMatrix();
+
+ for (finger = 0; finger < nfingers; finger++)
+ {
+ int bone = nbones - 2;
+ glPushMatrix();
+ if (finger == 0) /* thumb */
+ {
+ glTranslatef (off * 0.113, -0.033, 0.093);
+ glRotatef (off * 45, 0, 1, 0);
+
+ if (h->sinister)
+ glRotatef (180, 0, 0, 1);
+
+ glRotatef (off * h->base[finger] * -180 / M_PI, 1, 0, 0);
+ bone--;
+
+ glFrontFace (GL_CCW);
+ glCallList (bp->dlists[THUMB_METACARPAL]);
+ glPushMatrix();
+ glScalef (1, -1, 1);
+ glFrontFace (GL_CW);
+ glCallList (bp->dlists[THUMB_METACARPAL]);
+ glPopMatrix();
+
+ glTranslatef (0, 0, 0.1497);
+ glRotatef (h->joint[finger][bone] * -180 / M_PI, 0, 1, 0);
+ bone--;
+
+ glFrontFace (GL_CCW);
+ glCallList (bp->dlists[THUMB_PROXIMAL]);
+ glPushMatrix();
+ glScalef (1, -1, 1);
+ glFrontFace (GL_CW);
+ glCallList (bp->dlists[THUMB_PROXIMAL]);
+ glPopMatrix();
+
+ glTranslatef (0, 0, 0.1212);
+ glRotatef (h->joint[finger][bone] * -180 / M_PI, 0, 1, 0);
+ bone--;
+
+ glFrontFace (GL_CCW);
+ glCallList (bp->dlists[THUMB_DISTAL]);
+ glPushMatrix();
+ glScalef (1, -1, 1);
+ glFrontFace (GL_CW);
+ glCallList (bp->dlists[THUMB_DISTAL]);
+ glPopMatrix();
+ }
+ else
+ {
+ switch (finger) {
+ case 1: /* index */
+ glTranslatef (off * 0.135, 0.004, 0.26835);
+ glRotatef (off * 4, 0, 1, 0);
+ break;
+ case 2: /* middle */
+ glTranslatef (off * 0.046, 0.004, 0.27152);
+ glRotatef (off * 1, 0, 1, 0);
+ break;
+ case 3: /* ring */
+ glTranslatef (off * -0.046, 0.004, 0.25577);
+ glRotatef (off * -1, 0, 1, 0);
+ break;
+ case 4: /* pinky */
+ glTranslatef (off * -0.135, 0.004, 0.22204);
+ glRotatef (off * -4, 0, 1, 0);
+ break;
+ default: abort(); break;
+ }
+
+ glRotatef (90, 0, 0, 1);
+
+ glFrontFace (GL_CCW);
+ glCallList (bp->dlists[FINGER_METACARPAL]);
+ glPushMatrix();
+ glScalef (1, -1, 1);
+ glFrontFace (GL_CW);
+ glCallList (bp->dlists[FINGER_METACARPAL]);
+ glPopMatrix();
+
+ glTranslatef (0, 0, 0.1155);
+ glRotatef (off * h->base[finger] * -180 / M_PI, 1, 0, 0);
+ glRotatef (h->joint[finger][bone] * -180 / M_PI, 0, 1, 0);
+ bone--;
+
+ glFrontFace (GL_CCW);
+ glCallList (bp->dlists[FINGER_PROXIMAL]);
+ glPushMatrix();
+ glScalef (1, -1, 1);
+ glFrontFace (GL_CW);
+ glCallList (bp->dlists[FINGER_PROXIMAL]);
+ glPopMatrix();
+
+ glTranslatef (0, 0, 0.1815);
+ glRotatef (h->joint[finger][bone] * -180 / M_PI, 0, 1, 0);
+ bone--;
+
+ glFrontFace (GL_CCW);
+ glCallList (bp->dlists[FINGER_INTERMEDIATE]);
+ glPushMatrix();
+ glScalef (1, -1, 1);
+ glFrontFace (GL_CW);
+ glCallList (bp->dlists[FINGER_INTERMEDIATE]);
+ glPopMatrix();
+
+ glTranslatef (0, 0, 0.1003);
+ glRotatef (h->joint[finger][bone] * -180 / M_PI, 0, 1, 0);
+ bone--;
+
+ glFrontFace (GL_CCW);
+ glCallList (bp->dlists[FINGER_DISTAL]);
+ glPushMatrix();
+ glScalef (1, -1, 1);
+ glFrontFace (GL_CW);
+ glCallList (bp->dlists[FINGER_DISTAL]);
+ glPopMatrix();
+ }
+ glPopMatrix();
+ }
+ glPopMatrix();
+
+ if (h->sinister && bp->ringp)
+ {
+ GLfloat color[] = { 1.0, 0.4, 0.4, 1 };
+ GLfloat center = 0.4;
+ GLfloat th;
+ GLfloat r = center - h->pos[0] + 0.1;
+ GLfloat min = 0.22;
+ if (r < min) r = min;
+ glPushMatrix();
+ glTranslatef (-center, -0.28, 0.5);
+ glRotatef (h->wrist[2] * 180 / M_PI * -off, 0, 0, 1);
+ glRotatef (h->wrist[0] * 180 / M_PI, 1, 0, 0);
+
+ glColor4fv (color);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+ glDisable (GL_LIGHTING);
+ glLineWidth (8);
+ glBegin (GL_LINE_LOOP);
+ for (th = 0; th < M_PI * 2; th += M_PI / 180)
+ glVertex3f (r * cos(th), r * sin(th), 0);
+ glEnd();
+ if (! wire) glEnable (GL_LIGHTING);
+ glPopMatrix();
+ }
+
+ glDisable (GL_BLEND);
+}
+
+
+static void
+parse_color (ModeInfo *mi, char *key, GLfloat color[4])
+{
+ XColor xcolor;
+ char *string = get_string_resource (mi->dpy, key, "Color");
+ if (!XParseColor (mi->dpy, mi->xgwa.colormap, string, &xcolor))
+ {
+ fprintf (stderr, "%s: unparsable color in %s: %s\n", progname,
+ key, string);
+ exit (1);
+ }
+ free (string);
+
+ color[0] = xcolor.red / 65536.0;
+ color[1] = xcolor.green / 65536.0;
+ color[2] = xcolor.blue / 65536.0;
+ color[3] = 1;
+}
+
+
+static int
+draw_ground (ModeInfo *mi)
+{
+ int wire = MI_IS_WIREFRAME(mi);
+ GLfloat i, j, k;
+
+ /* When using fog, iOS apparently doesn't like lines or quads that are
+ really long, and extend very far outside of the scene. Maybe? If the
+ length of the line (cells * cell_size) is greater than 25 or so, lines
+ that are oriented steeply away from the viewer tend to disappear
+ (whether implemented as GL_LINES or as GL_QUADS).
+
+ So we do a bunch of smaller grids instead of one big one.
+ */
+ int cells = 30;
+ GLfloat cell_size = 0.8;
+ int points = 0;
+ int grids = 12;
+ GLfloat color[4];
+
+ if (wire) glLineWidth (1);
+
+ parse_color (mi, "groundColor", color);
+
+ glPushMatrix();
+
+ glScalef (0.2, 0.2, 0.2);
+
+ glRotatef (frand(90), 0, 0, 1);
+
+ if (!wire)
+ {
+ GLfloat fog_color[4] = { 0, 0, 0, 1 };
+
+ glLineWidth (4);
+ glEnable (GL_LINE_SMOOTH);
+ glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable (GL_BLEND);
+
+ glFogi (GL_FOG_MODE, GL_EXP2);
+ glFogfv (GL_FOG_COLOR, fog_color);
+ glFogf (GL_FOG_DENSITY, 0.015);
+ glFogf (GL_FOG_START, -cells/2 * cell_size * grids);
+ glEnable (GL_FOG);
+ }
+
+ glColor4fv (color);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+
+ glTranslatef (-cells * grids * cell_size / 2,
+ -cells * grids * cell_size / 2, 0);
+
+ for (j = 0; j < grids; j++)
+ {
+ glPushMatrix();
+ for (k = 0; k < grids; k++)
+ {
+ glBegin (GL_LINES);
+ for (i = -cells/2; i < cells/2; i++)
+ {
+ GLfloat a = i * cell_size;
+ GLfloat b = cells/2 * cell_size;
+ glVertex3f (a, -b, 0); glVertex3f (a, b, 0); points++;
+ glVertex3f (-b, a, 0); glVertex3f (b, a, 0); points++;
+ }
+ glEnd();
+ glTranslatef (cells * cell_size, 0, 0);
+ }
+ glPopMatrix();
+ glTranslatef (0, cells * cell_size, 0);
+ }
+
+ if (!wire)
+ {
+ glDisable (GL_LINE_SMOOTH);
+ glDisable (GL_BLEND);
+ glDisable (GL_FOG);
+ }
+
+ glPopMatrix();
+
+ return points;
+}
+
+
+ENTRYPOINT void
+reshape_hands (ModeInfo *mi, int width, int height)
+{
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ glViewport (0, y, (GLint) width, (GLint) height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt( 0.0, 0.0, 30.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+hands_handle_event (ModeInfo *mi, XEvent *event)
+{
+ hands_configuration *bp = &bps[MI_SCREEN(mi)];
+ Bool ok = False;
+
+ if (gltrackball_event_handler (event, bp->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &bp->button_down_p))
+ ok = True;
+ else if (debug_p && event->type == KeyPress)
+ {
+ int nfingers = countof (bp->geom->fingers);
+ int nbones = countof (bp->geom->fingers[0].bones);
+ KeySym keysym;
+ char c = 0;
+ Bool tiltp = False;
+ double delta = 0.02;
+ double sign = 1;
+ int i, j, k;
+
+ XLookupString (&event->xkey, &c, 1, &keysym, 0);
+
+ for (i = 0; i < bp->nhands; i++)
+ {
+ hand *h = &bp->hands[i].current;
+ Bool modp = !!event->xkey.state;
+
+ switch (keysym) {
+ case XK_Up: ok = True; h->pos[(modp ? 1 : 2)] += delta; break;
+ case XK_Down: ok = True; h->pos[(modp ? 1 : 2)] -= delta; break;
+ case XK_Right: ok = True; h->pos[0] += delta; break;
+ case XK_Left: ok = True; h->pos[0] -= delta; break;
+ default: break;
+ }
+
+ switch (c) {
+ case '?': case '/':
+ ok = True;
+ fprintf (stderr, "\n"
+ " Open fingers: 12345 (1 = pinky, 5 = thumb)\n"
+ " Close fingers: QWERT\n"
+ " Tilt left: ASDFG\n"
+ " Tilt right: ZXCVB\n"
+ " Bend wrist: UJ (up/down)\n"
+ " Bend wrist: IK (left/right)\n"
+ " Rotate wrist: OL\n"
+ " Move origin: arrow keys: XZ plane; shift: XY plane\n"
+ " Tab: print current state to stdout\n"
+ " 0: Reset\n"
+ " ?: This\n\n");
+ return ok;
+ break;
+
+
+ case '1': case '!': j = 4; sign = -1; goto FINGER;
+ case '2': case '@': j = 3; sign = -1; goto FINGER;
+ case '3': case '#': j = 2; sign = -1; goto FINGER;
+ case '4': case '$': j = 1; sign = -1; goto FINGER;
+ case '5': case '%': j = 0; sign = -1; goto FINGER;
+
+ case 'q': case 'Q': j = 4; sign = 1; goto FINGER;
+ case 'w': case 'W': j = 3; sign = 1; goto FINGER;
+ case 'e': case 'E': j = 2; sign = 1; goto FINGER;
+ case 'r': case 'R': j = 1; sign = 1; goto FINGER;
+ case 't': case 'T': j = 0; sign = 1; goto FINGER;
+
+ case 'a': case 'A': tiltp = True; j = 4; sign = 1; goto FINGER;
+ case 's': case 'S': tiltp = True; j = 3; sign = 1; goto FINGER;
+ case 'd': case 'D': tiltp = True; j = 2; sign = 1; goto FINGER;
+ case 'f': case 'F': tiltp = True; j = 1; sign = 1; goto FINGER;
+ case 'g': case 'G': tiltp = True; j = 0; sign = 1; goto FINGER;
+
+ case 'z': case 'Z': tiltp = True; j = 4; sign = -1; goto FINGER;
+ case 'x': case 'X': tiltp = True; j = 3; sign = -1; goto FINGER;
+ case 'c': case 'C': tiltp = True; j = 2; sign = -1; goto FINGER;
+ case 'v': case 'V': tiltp = True; j = 1; sign = -1; goto FINGER;
+ case 'b': case 'B': tiltp = True; j = 0; sign = -1; goto FINGER;
+ FINGER:
+ ok = True;
+ if (tiltp)
+ h->base[j] = constrain_joint (h->base[j] + sign * delta,
+ bp->geom->fingers[j].base.min,
+ bp->geom->fingers[j].base.max);
+ else
+ for (k = 0; k < nbones; k++)
+ h->joint[j][k] =
+ constrain_joint (h->joint[j][k] + sign * delta,
+ bp->geom->fingers[j].bones[k].min,
+ bp->geom->fingers[j].bones[k].max);
+ break;
+
+ case 'u': case 'U': ok = True; h->wrist[0] -= delta; break;
+ case 'j': case 'J': ok = True; h->wrist[0] += delta; break;
+ case 'i': case 'I': ok = True; h->wrist[1] += delta; break;
+ case 'k': case 'K': ok = True; h->wrist[1] -= delta; break;
+ case 'o': case 'O': ok = True; h->wrist[2] -= delta; break;
+ case 'l': case 'L': ok = True; h->wrist[2] += delta; break;
+
+ case '0': case ')':
+ ok = True;
+ for (j = 0; j < nfingers; j++)
+ {
+ h->base[j] = 0;
+ for (k = 0; k < nbones; k++)
+ h->joint[j][k] = 0;
+ }
+ for (j = 0; j < 3; j++)
+ h->wrist[j] = 0;
+ for (j = 0; j < 3; j++)
+ h->pos[j] = 0;
+ break;
+
+ case '\t':
+ ok = True;
+ fprintf (stdout, "\nstatic const hand H = {\n {");
+ for (i = 0; i < nfingers; i++)
+ {
+ if (i > 0) fprintf (stdout, " ");
+ fprintf (stdout, "{");
+ for (j = 0; j < nbones; j++)
+ {
+ double v = h->joint[i][j];
+ if (i == 0 && j == 3) v = 0; /* no thumb intermediate */
+ if (j == 0) fprintf (stdout, " ");
+ fprintf (stdout, "%.2f", v);
+ if (j < nbones-1) fprintf (stdout, ", ");
+ }
+ fprintf (stdout, " }");
+ if (i < nfingers-1) fprintf (stdout, ",\n");
+ }
+ fprintf (stdout, "},\n { ");
+ for (i = 0; i < nfingers; i++)
+ {
+ fprintf (stdout, "%.2f", h->base[i]);
+ if (i < nfingers-1) fprintf (stdout, ", ");
+ }
+ fprintf (stdout, " },\n");
+ fprintf (stdout, " { %.2f, %.2f, %.2f },\n",
+ h->wrist[0], h->wrist[1], h->wrist[2]);
+ fprintf (stdout, " { %.2f, %.2f, %.2f },\n",
+ h->pos[0], h->pos[1], h->pos[2]);
+ fprintf (stdout, " True\n};\n\n");
+ fflush (stdout);
+ return ok;
+ break;
+
+ default: break;
+ }
+ }
+ }
+ return ok;
+}
+
+
+ENTRYPOINT void
+init_hands (ModeInfo *mi)
+{
+ hands_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+ hand def[2];
+ int i;
+
+ MI_INIT (mi, bps);
+ bp = &bps[MI_SCREEN(mi)];
+
+ bp->glx_context = init_GL(mi);
+
+ reshape_hands (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+ bp->pair[0].tick = bp->pair[1].tick = 1.0;
+ bp->geom = &human_hand;
+ bp->nhands = MI_COUNT(mi);
+ if (bp->nhands <= 0) bp->nhands = 1;
+
+ if (bp->nhands & 1) bp->nhands++; /* Even number */
+
+ if (debug_p)
+ {
+ bp->nhands = 1;
+ do_spin = "";
+ do_wander = False;
+ }
+
+ bp->hands = calloc (bp->nhands, sizeof(*bp->hands));
+
+ {
+ double spin_speed = 0.5 * speed;
+ double wander_speed = 0.005 * speed;
+ double tilt_speed = 0.001 * speed;
+ double spin_accel = 0.5;
+
+ char *s = do_spin;
+ while (*s)
+ {
+ if (*s == 'x' || *s == 'X') bp->spinx = True;
+ else if (*s == 'y' || *s == 'Y') bp->spiny = True;
+ else if (*s == 'z' || *s == 'Z') bp->spinz = True;
+ else if (*s == '0') ;
+ else
+ {
+ fprintf (stderr,
+ "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n",
+ progname, do_spin);
+ exit (1);
+ }
+ s++;
+ }
+
+ bp->rot = make_rotator (bp->spinx ? spin_speed : 0,
+ bp->spiny ? spin_speed : 0,
+ bp->spinz ? spin_speed : 0,
+ spin_accel,
+ do_wander ? wander_speed : 0,
+ False);
+ bp->rot2 = (face_front_p
+ ? make_rotator (0, 0, 0, 0, tilt_speed, True)
+ : 0);
+ bp->trackball = gltrackball_init (False);
+ }
+
+ /* Set default hand to the last hand in the animation list. */
+ for (i = 0; i <= 1; i++)
+ {
+ int j;
+ for (j = 0; ; j++)
+ if (!all_hand_anims[j+1].pair[i])
+ {
+ if (! all_hand_anims[j].pair[i]) abort();
+ def[i] = *all_hand_anims[j].pair[i]->dest;
+ if (debug_p)
+ def[i].alpha = 1;
+ else
+ {
+ def[i].pos[1] = 5; /* off screen */
+ def[i].pos[2] = 5;
+ }
+ break;
+ }
+ }
+
+ for (i = 0; i < bp->nhands; i++)
+ {
+ int sinister = (i & 1);
+ bp->hands[i].to = def[sinister];
+ bp->hands[i].to.sinister = sinister;
+ bp->hands[i].from = bp->hands[i].to;
+ bp->hands[i].current = bp->hands[i].to;
+ }
+
+ glFrontFace(GL_CW);
+ bp->dlists = (GLuint *) calloc (countof(all_objs)+1, sizeof(GLuint));
+ for (i = 0; i < countof(all_objs); i++)
+ bp->dlists[i] = glGenLists (1);
+
+ for (i = 0; i < countof(all_objs); i++)
+ {
+ const struct gllist *gll = *all_objs[i];
+ GLfloat s = 0.1;
+ glNewList (bp->dlists[i], GL_COMPILE);
+ switch (i) {
+ case GROUND:
+ if (! ground)
+ ground = (struct gllist *) calloc (1, sizeof(*ground));
+ ground->points = draw_ground (mi);
+ break;
+ default:
+ glPushMatrix();
+ glScalef (s, s, s);
+ renderList (gll, wire);
+ glPopMatrix();
+ break;
+ }
+ glEndList ();
+ }
+
+ if (!wire)
+ {
+ GLfloat pos[4] = {0.4, 0.2, 0.4, 0.0};
+ GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0};
+ GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+ GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0};
+
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+ }
+
+ parse_color (mi, "foreground", bp->color);
+}
+
+
+static void
+tick_hands (ModeInfo *mi)
+{
+ hands_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i, j, k, nfingers, nbones, sinister;
+ double now = double_time();
+
+ if (debug_p) return;
+
+ if (!bp->pair[0].anim && /* Both hands finished. */
+ !bp->pair[1].anim) /* Pick a new animation. */
+ {
+ int nanims = 0;
+ while (all_hand_anims[nanims].pair[0] ||
+ all_hand_anims[nanims].pair[1])
+ nanims++;
+ i = random() % nanims;
+ for (sinister = 0; sinister <= 1; sinister++)
+ {
+ bp->pair[sinister].anim = all_hand_anims[i].pair[sinister];
+ bp->pair[sinister].anim_hand = 0;
+ bp->pair[sinister].anim_hands = 0;
+ while (bp->pair[sinister].anim[bp->pair[sinister].anim_hands].dest)
+ bp->pair[sinister].anim_hands++;
+ bp->pair[sinister].anim_start = now;
+ bp->pair[sinister].tick = 0;
+
+ if (sinister == 1)
+ bp->pair[sinister].delay = all_hand_anims[i].delay;
+ }
+
+ bp->ringp = (all_hand_anims[i].pair[0] == goatse_anim);
+
+ for (i = 0; i < bp->nhands; i++)
+ {
+ sinister = bp->hands[i].from.sinister;
+ bp->hands[i].from = bp->hands[i].current;
+ bp->hands[i].to = *bp->pair[sinister].anim->dest;
+ bp->hands[i].to.sinister = sinister;
+
+ j = bp->pair[sinister].anim_hand;
+
+ bp->hands[i].to.alpha =
+ (bp->pair[sinister].anim == hidden_anim ? 0 : 1);
+
+ /* Anim keyframes can adjust position and rotation */
+ for (k = 0; k < 3; k++)
+ {
+ bp->hands[i].to.wrist[k] +=
+ bp->pair[sinister].anim[j].rot[k];
+ bp->hands[i].to.pos[k] +=
+ bp->pair[sinister].anim[j].pos[k];
+ }
+ }
+ }
+
+ for (sinister = 0; sinister <= 1; sinister++)
+ {
+ const hand_anim *h;
+ double elapsed, duration, duration2;
+
+ if (! bp->pair[sinister].anim) /* Done with this hand, not the other. */
+ continue;
+
+ h = &bp->pair[sinister].anim[bp->pair[sinister].anim_hand];
+
+ elapsed = now - bp->pair[sinister].anim_start;
+ duration = h->duration / speed;
+ duration2 = duration + (bp->pair[sinister].delay + h->pause) / speed;
+
+ if (elapsed > duration2 && /* Done animating and pausing this hand. */
+ bp->pair[sinister].tick >= 1) /* ...and painted final frame. */
+ {
+ bp->pair[sinister].anim_hand++;
+ bp->pair[sinister].tick = 1;
+ if (bp->pair[sinister].anim_hand >= bp->pair[sinister].anim_hands)
+ {
+ /* Done with all steps of this hand's animation. */
+ bp->pair[sinister].anim = 0;
+ for (i = 0; i < bp->nhands; i++)
+ if (bp->hands[i].from.sinister == sinister)
+ bp->hands[i].from = bp->hands[i].to = bp->hands[i].current;
+ }
+ else
+ {
+ /* Move to next step of animation. */
+ for (i = 0; i < bp->nhands; i++)
+ {
+ if (sinister != bp->hands[i].current.sinister)
+ continue;
+
+ j = bp->pair[sinister].anim_hand;
+ bp->hands[i].from = bp->hands[i].current;
+ bp->hands[i].to = *bp->pair[sinister].anim[j].dest;
+ bp->hands[i].to.alpha =
+ (bp->pair[sinister].anim == hidden_anim ? 0 : 1);
+
+ /* Anim keyframes can adjust position and rotation */
+ for (k = 0; k < 3; k++)
+ {
+ bp->hands[i].to.wrist[k] +=
+ bp->pair[sinister].anim[j].rot[k];
+ bp->hands[i].to.pos[k] +=
+ bp->pair[sinister].anim[j].pos[k];
+ }
+ }
+ bp->pair[sinister].anim_start = now;
+ bp->pair[sinister].tick = 0;
+ bp->pair[sinister].delay = 0;
+ }
+ }
+ else if (elapsed > duration) /* Done animating, still pausing. */
+ bp->pair[sinister].tick = 1;
+ else /* Still animating. */
+ bp->pair[sinister].tick = elapsed / duration;
+
+ if (bp->pair[sinister].tick > 1)
+ bp->pair[sinister].tick = 1;
+
+ /* Move the joints into position:
+ compute 'current' between 'from' and 'to' by ratio 'tick'. */
+
+ nfingers = countof (bp->geom->fingers);
+ nbones = countof (bp->geom->fingers[0].bones);
+ for (i = 0; i < bp->nhands; i++)
+ {
+ if (bp->hands[i].current.sinister != sinister)
+ continue;
+ for (j = 0; j < nfingers; j++)
+ {
+ for (k = 0; k < nbones; k++)
+ bp->hands[i].current.joint[j][k] =
+ constrain_joint (bp->hands[i].from.joint[j][k] +
+ bp->pair[sinister].tick
+ * (bp->hands[i].to.joint[j][k] -
+ bp->hands[i].from.joint[j][k]),
+ bp->geom->fingers[j].bones[k].min,
+ bp->geom->fingers[j].bones[k].max);
+ bp->hands[i].current.base[j] =
+ constrain_joint (bp->hands[i].from.base[j] +
+ bp->pair[sinister].tick
+ * (bp->hands[i].to.base[j] -
+ bp->hands[i].from.base[j]),
+ bp->geom->fingers[j].base.min,
+ bp->geom->fingers[j].base.max);
+ }
+ j = 0;
+ bp->hands[i].current.wrist[j] =
+ constrain_joint (bp->hands[i].from.wrist[j] +
+ bp->pair[sinister].tick
+ * (bp->hands[i].to.wrist[j] -
+ bp->hands[i].from.wrist[j]),
+ bp->geom->palm.min,
+ bp->geom->palm.max);
+ j = 1;
+ bp->hands[i].current.wrist[j] =
+ constrain_joint (bp->hands[i].from.wrist[j] +
+ bp->pair[sinister].tick
+ * (bp->hands[i].to.wrist[j] -
+ bp->hands[i].from.wrist[j]),
+ bp->geom->wrist1.min,
+ bp->geom->wrist1.max);
+ j = 2;
+ bp->hands[i].current.wrist[j] =
+ constrain_joint (bp->hands[i].from.wrist[j] +
+ bp->pair[sinister].tick
+ * (bp->hands[i].to.wrist[j] -
+ bp->hands[i].from.wrist[j]),
+ bp->geom->wrist2.min,
+ bp->geom->wrist2.max);
+ for (j = 0; j < 3; j++)
+ bp->hands[i].current.pos[j] =
+ constrain_joint (bp->hands[i].from.pos[j] +
+ bp->pair[sinister].tick
+ * (bp->hands[i].to.pos[j] -
+ bp->hands[i].from.pos[j]),
+ -999, 999);
+ bp->hands[i].current.alpha =
+ bp->hands[i].from.alpha +
+ bp->pair[sinister].tick *
+ (bp->hands[i].to.alpha - bp->hands[i].from.alpha);
+ }
+ }
+}
+
+
+ENTRYPOINT void
+draw_hands (ModeInfo *mi)
+{
+ hands_configuration *bp = &bps[MI_SCREEN(mi)];
+ Display *dpy = MI_DISPLAY(mi);
+ Window window = MI_WINDOW(mi);
+ GLfloat s;
+ int i;
+
+ static const GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0};
+ static const GLfloat bshiny = 128.0;
+ GLfloat bcolor[4] = { 0.7, 0.7, 1.0, 1.0 };
+
+ if (!bp->glx_context)
+ return;
+
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+ glShadeModel(GL_SMOOTH);
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_NORMALIZE);
+ glEnable(GL_CULL_FACE);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix ();
+
+ glRotatef(current_device_rotation(), 0, 0, 1);
+
+ s = 10;
+ glScalef (s, s, s);
+
+ {
+ double x, y, z;
+
+ gltrackball_rotate (bp->trackball);
+
+ if (face_front_p)
+ {
+ double maxx = 120 / 10.0;
+ double maxy = 55 / 10.0;
+ double maxz = 40 / 10.0;
+ get_position (bp->rot2, &x, &y, &z, !bp->button_down_p);
+ if (bp->spinx) glRotatef (maxx/2 - x*maxx, 0, 1, 0);
+ if (bp->spiny) glRotatef (maxy/2 - y*maxy, 1, 0, 0);
+ if (bp->spinz) glRotatef (maxz/2 - z*maxz, 0, 0, 1);
+ }
+ else
+ {
+ get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
+ glRotatef (x * 360, 1, 0, 0);
+ glRotatef (y * 360, 0, 1, 0);
+ glRotatef (z * 360, 0, 0, 1);
+ }
+
+ glRotatef (-70, 1, 0, 0);
+
+ glTranslatef (0, 0, -0.5);
+
+ glPushMatrix();
+ glRotatef ((bp->spiny ? y : bp->spinx ? x : z) * 90, 0, 0, 1);
+ glCallList (bp->dlists[GROUND]);
+ glPopMatrix();
+
+ get_position (bp->rot, &x, &y, &z, !bp->button_down_p);
+ z += 1; /* Origin of hands is 1.0 above floor. */
+ glTranslatef((x - 0.5) * 0.8,
+ (y - 0.5) * 1.1,
+ (z - 0.5) * 0.2);
+ }
+
+ glMaterialfv (GL_FRONT, GL_SPECULAR, bspec);
+ glMateriali (GL_FRONT, GL_SHININESS, bshiny);
+ glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bcolor);
+
+ {
+ /* Lay the pairs out in a square-ish grid, keeping pairs together. */
+ int rows = sqrt (bp->nhands / 2);
+ int cols;
+ int x, y;
+
+ cols = ceil (bp->nhands / 2.0 / rows);
+
+ if (bp->nhands <= 2)
+ rows = cols = 1;
+
+ if (MI_WIDTH(mi) < MI_HEIGHT(mi)) /* Portrait */
+ {
+ s = 0.5;
+ glScalef (s, s, s);
+ }
+
+ if (bp->nhands == 1)
+ glScalef (2, 2, 2);
+
+ if (cols > 1)
+ {
+ s = 1.0 / rows;
+ glScalef (s, s, s);
+ }
+
+ if (bp->nhands > 1)
+ {
+ s = 0.8;
+ glTranslatef (-s * rows * 1.5, -s * cols, 0);
+ glTranslatef (s, s, 0);
+ }
+
+ i = 0;
+ for (y = 0; y < cols; y++)
+ for (x = 0; x < rows; x++)
+ {
+ glPushMatrix();
+ glTranslatef (x * s * 3, y * s * 2, y * s);
+ if (i < bp->nhands)
+ draw_hand (mi, &bp->hands[i++].current);
+ glTranslatef (s, 0, 0);
+ if (i < bp->nhands)
+ draw_hand (mi, &bp->hands[i++].current);
+ glPopMatrix();
+ }
+ }
+ glPopMatrix();
+
+ tick_hands (mi);
+
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
+
+ glXSwapBuffers(dpy, window);
+}
+
+
+ENTRYPOINT void
+free_hands (ModeInfo *mi)
+{
+ hands_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+
+ if (bp->dlists) {
+ for (i = 0; i < countof(all_objs); i++)
+ if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+ free (bp->dlists);
+ }
+}
+
+XSCREENSAVER_MODULE_2 ("Handsy", handsy, hands)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/handsy.dxf b/hacks/glx/handsy.dxf
new file mode 100644
index 0000000..c455186
--- /dev/null
+++ b/hacks/glx/handsy.dxf
@@ -0,0 +1,67706 @@
+ 0
+SECTION
+ 2
+ENTITIES
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.18812188165369287
+20
+-1.1102230246251565e-15
+30
+2.0022820636598677
+11
+-0.1330222582069191
+21
+0.19156135043888822
+31
+2.0445614917581056
+12
+-0.18812188165372756
+22
+0.19156135043889155
+32
+2.00228206365989
+13
+-0.18812188165372756
+23
+0.19156135043889155
+33
+2.00228206365989
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.1330222582069191
+20
+0.19156135043888822
+30
+2.0445614917581056
+11
+-0.18812188165369287
+21
+-1.1102230246251565e-15
+31
+2.0022820636598677
+12
+-0.13302225820690117
+22
+-1.1102230246251565e-15
+32
+2.044561491758081
+13
+-0.13302225820690117
+23
+-1.1102230246251565e-15
+33
+2.044561491758081
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.23040130975195694
+20
+-1.1102230246251565e-15
+30
+1.9471824402131095
+11
+0.188121881653721
+21
+0.19156135043889155
+31
+2.002282063659892
+12
+0.18812188165372434
+22
+-2.220446049250313e-15
+32
+2.002282063659901
+13
+0.18812188165372434
+23
+-2.220446049250313e-15
+33
+2.002282063659901
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.188121881653721
+20
+0.19156135043889155
+30
+2.002282063659892
+11
+0.23040130975195694
+21
+-1.1102230246251565e-15
+31
+1.9471824402131095
+12
+0.2304013097519334
+22
+0.19156135043889155
+32
+1.9471824402130984
+13
+0.2304013097519334
+23
+0.19156135043889155
+33
+1.9471824402130984
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.23040130975190468
+20
+-1.1102230246251565e-15
+30
+1.6811379237992659
+11
+-0.18812188165372756
+21
+0.19156135043889044
+31
+1.6260383003524492
+12
+-0.1881218816537231
+22
+-2.220446049250313e-15
+32
+1.626038300352452
+13
+-0.1881218816537231
+23
+-2.220446049250313e-15
+33
+1.626038300352452
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.18812188165372756
+20
+0.19156135043889044
+30
+1.6260383003524492
+11
+-0.23040130975190468
+21
+-1.1102230246251565e-15
+31
+1.6811379237992659
+12
+-0.23040130975192985
+22
+0.19156135043889155
+32
+1.6811379237992548
+13
+-0.23040130975192985
+23
+0.19156135043889155
+33
+1.6811379237992548
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.23040130975192985
+20
+0.19156135043889155
+30
+1.9471824402130984
+11
+-0.2569792693466746
+21
+-1.1102230246251565e-15
+31
+1.8830175696991678
+12
+-0.23040130975189796
+22
+-2.220446049250313e-15
+32
+1.947182440213074
+13
+-0.23040130975189796
+23
+-2.220446049250313e-15
+33
+1.947182440213074
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.2569792693466746
+20
+-1.1102230246251565e-15
+30
+1.8830175696991678
+11
+-0.23040130975192985
+21
+0.19156135043889155
+31
+1.9471824402130984
+12
+-0.2569792693467132
+22
+0.19156135043888933
+32
+1.88301756969917
+13
+-0.2569792693467132
+23
+0.19156135043888933
+33
+1.88301756969917
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.13302225820690117
+20
+-1.1102230246251565e-15
+30
+2.044561491758081
+11
+-0.06885738769298949
+21
+0.19156135043889155
+31
+2.0711394513528925
+12
+-0.1330222582069191
+22
+0.19156135043888822
+32
+2.0445614917581056
+13
+-0.1330222582069191
+23
+0.19156135043888822
+33
+2.0445614917581056
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.06885738769298949
+20
+0.19156135043889155
+30
+2.0711394513528925
+11
+-0.13302225820690117
+21
+-1.1102230246251565e-15
+31
+2.044561491758081
+12
+-0.06885738769298727
+22
+0.0
+32
+2.0711394513528703
+13
+-0.06885738769298727
+23
+0.0
+33
+2.0711394513528703
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+1.7763568394002505e-15
+20
+-2.220446049250313e-15
+30
+2.0802046984199913
+11
+0.06885738769298744
+21
+0.19156135043889044
+31
+2.0711394513528925
+12
+-9.992007221626409e-16
+22
+0.19156135043889155
+32
+2.08020469842002
+13
+-9.992007221626409e-16
+23
+0.19156135043889155
+33
+2.08020469842002
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.06885738769298744
+20
+0.19156135043889044
+30
+2.0711394513528925
+11
+1.7763568394002505e-15
+21
+-2.220446049250313e-15
+31
+2.0802046984199913
+12
+0.06885738769298966
+22
+-1.1102230246251565e-15
+32
+2.071139451352888
+13
+0.06885738769298966
+23
+-1.1102230246251565e-15
+33
+2.071139451352888
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.2660445164138411
+20
+0.19156135043889155
+30
+1.8141601820061808
+11
+-0.25697926934668525
+21
+-1.1102230246251565e-15
+31
+1.745302794313192
+12
+-0.26604451641381477
+22
+-2.220446049250313e-15
+32
+1.8141601820061808
+13
+-0.26604451641381477
+23
+-2.220446049250313e-15
+33
+1.8141601820061808
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.25697926934668525
+20
+-1.1102230246251565e-15
+30
+1.745302794313192
+11
+-0.2660445164138411
+21
+0.19156135043889155
+31
+1.8141601820061808
+12
+-0.2569792693467132
+22
+0.19156135043889155
+32
+1.745302794313181
+13
+-0.2569792693467132
+23
+0.19156135043889155
+33
+1.745302794313181
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.2569792693466746
+20
+-1.1102230246251565e-15
+30
+1.8830175696991678
+11
+-0.2660445164138411
+21
+0.19156135043889155
+31
+1.8141601820061808
+12
+-0.26604451641381477
+22
+-2.220446049250313e-15
+32
+1.8141601820061808
+13
+-0.26604451641381477
+23
+-2.220446049250313e-15
+33
+1.8141601820061808
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.2660445164138411
+20
+0.19156135043889155
+30
+1.8141601820061808
+11
+-0.2569792693466746
+21
+-1.1102230246251565e-15
+31
+1.8830175696991678
+12
+-0.2569792693467132
+22
+0.19156135043888933
+32
+1.88301756969917
+13
+-0.2569792693467132
+23
+0.19156135043888933
+33
+1.88301756969917
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.2569792693467132
+20
+0.19156135043889155
+30
+1.745302794313181
+11
+-0.23040130975190468
+21
+-1.1102230246251565e-15
+31
+1.6811379237992659
+12
+-0.25697926934668525
+22
+-1.1102230246251565e-15
+32
+1.745302794313192
+13
+-0.25697926934668525
+23
+-1.1102230246251565e-15
+33
+1.745302794313192
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.23040130975190468
+20
+-1.1102230246251565e-15
+30
+1.6811379237992659
+11
+-0.2569792693467132
+21
+0.19156135043889155
+31
+1.745302794313181
+12
+-0.23040130975192985
+22
+0.19156135043889155
+32
+1.6811379237992548
+13
+-0.23040130975192985
+23
+0.19156135043889155
+33
+1.6811379237992548
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.06885738769298966
+20
+-1.1102230246251565e-15
+30
+2.071139451352888
+11
+0.13302225820692148
+21
+0.19156135043888933
+31
+2.0445614917581056
+12
+0.06885738769298744
+22
+0.19156135043889044
+32
+2.0711394513528925
+13
+0.06885738769298744
+23
+0.19156135043889044
+33
+2.0711394513528925
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.13302225820692148
+20
+0.19156135043888933
+30
+2.0445614917581056
+11
+0.06885738769298966
+21
+-1.1102230246251565e-15
+31
+2.071139451352888
+12
+0.1330222582069237
+22
+-1.1102230246251565e-15
+32
+2.044561491758108
+13
+0.1330222582069237
+23
+-1.1102230246251565e-15
+33
+2.044561491758108
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.1330222582069237
+20
+-1.1102230246251565e-15
+30
+2.044561491758108
+11
+0.188121881653721
+21
+0.19156135043889155
+31
+2.002282063659892
+12
+0.13302225820692148
+22
+0.19156135043888933
+32
+2.0445614917581056
+13
+0.13302225820692148
+23
+0.19156135043888933
+33
+2.0445614917581056
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.188121881653721
+20
+0.19156135043889155
+30
+2.002282063659892
+11
+0.1330222582069237
+21
+-1.1102230246251565e-15
+31
+2.044561491758108
+12
+0.18812188165372434
+22
+-2.220446049250313e-15
+32
+2.002282063659901
+13
+0.18812188165372434
+23
+-2.220446049250313e-15
+33
+2.002282063659901
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.06885738769298727
+20
+0.0
+30
+2.0711394513528703
+11
+-9.992007221626409e-16
+21
+0.19156135043889155
+31
+2.08020469842002
+12
+-0.06885738769298949
+22
+0.19156135043889155
+32
+2.0711394513528925
+13
+-0.06885738769298949
+23
+0.19156135043889155
+33
+2.0711394513528925
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-9.992007221626409e-16
+20
+0.19156135043889155
+30
+2.08020469842002
+11
+-0.06885738769298727
+21
+0.0
+31
+2.0711394513528703
+12
+1.7763568394002505e-15
+22
+-2.220446049250313e-15
+32
+2.0802046984199913
+13
+1.7763568394002505e-15
+23
+-2.220446049250313e-15
+33
+2.0802046984199913
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.26604451641384186
+20
+0.19156135043889044
+30
+1.8141601820061786
+11
+0.25697926934670945
+21
+-1.1102230246251565e-15
+31
+1.8830175696991722
+12
+0.2660445164138424
+22
+-2.220446049250313e-15
+32
+1.814160182006172
+13
+0.2660445164138424
+23
+-2.220446049250313e-15
+33
+1.814160182006172
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.25697926934670945
+20
+-1.1102230246251565e-15
+30
+1.8830175696991722
+11
+0.26604451641384186
+21
+0.19156135043889044
+31
+1.8141601820061786
+12
+0.2569792693467089
+22
+0.19156135043889155
+32
+1.88301756969917
+13
+0.2569792693467089
+23
+0.19156135043889155
+33
+1.88301756969917
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.2569792693467089
+20
+0.19156135043889155
+30
+1.88301756969917
+11
+0.23040130975195694
+21
+-1.1102230246251565e-15
+31
+1.9471824402131095
+12
+0.25697926934670945
+22
+-1.1102230246251565e-15
+32
+1.8830175696991722
+13
+0.25697926934670945
+23
+-1.1102230246251565e-15
+33
+1.8830175696991722
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.23040130975195694
+20
+-1.1102230246251565e-15
+30
+1.9471824402131095
+11
+0.2569792693467089
+21
+0.19156135043889155
+31
+1.88301756969917
+12
+0.2304013097519334
+22
+0.19156135043889155
+32
+1.9471824402130984
+13
+0.2304013097519334
+23
+0.19156135043889155
+33
+1.9471824402130984
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.18812188165369287
+20
+-1.1102230246251565e-15
+30
+2.0022820636598677
+11
+-0.23040130975192985
+21
+0.19156135043889155
+31
+1.9471824402130984
+12
+-0.23040130975189796
+22
+-2.220446049250313e-15
+32
+1.947182440213074
+13
+-0.23040130975189796
+23
+-2.220446049250313e-15
+33
+1.947182440213074
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.23040130975192985
+20
+0.19156135043889155
+30
+1.9471824402130984
+11
+-0.18812188165369287
+21
+-1.1102230246251565e-15
+31
+2.0022820636598677
+12
+-0.18812188165372756
+22
+0.19156135043889155
+32
+2.00228206365989
+13
+-0.18812188165372756
+23
+0.19156135043889155
+33
+2.00228206365989
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.23040130975192985
+20
+0.19156135043889155
+30
+1.6811379237992548
+11
+6.661338147750939e-16
+21
+0.19156135043889155
+31
+1.8141601820061741
+12
+-0.18812188165372756
+22
+0.19156135043889044
+32
+1.6260383003524492
+13
+-0.18812188165372756
+23
+0.19156135043889044
+33
+1.6260383003524492
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+6.661338147750939e-16
+20
+0.19156135043889155
+30
+1.8141601820061741
+11
+-0.23040130975192985
+21
+0.19156135043889155
+31
+1.6811379237992548
+12
+-0.2569792693467132
+22
+0.19156135043889155
+32
+1.745302794313181
+13
+-0.2569792693467132
+23
+0.19156135043889155
+33
+1.745302794313181
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+6.661338147750939e-16
+20
+0.19156135043889155
+30
+1.8141601820061741
+11
+-0.2569792693467132
+21
+0.19156135043889155
+31
+1.745302794313181
+12
+-0.2660445164138411
+22
+0.19156135043889155
+32
+1.8141601820061808
+13
+-0.2660445164138411
+23
+0.19156135043889155
+33
+1.8141601820061808
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+6.661338147750939e-16
+20
+0.19156135043889155
+30
+1.8141601820061741
+11
+-0.2660445164138411
+21
+0.19156135043889155
+31
+1.8141601820061808
+12
+0.26604451641384186
+22
+0.19156135043889044
+32
+1.8141601820061786
+13
+0.26604451641384186
+23
+0.19156135043889044
+33
+1.8141601820061786
+70
+15
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.26604451641384186
+20
+0.19156135043889044
+30
+1.8141601820061786
+11
+-0.2660445164138411
+21
+0.19156135043889155
+31
+1.8141601820061808
+12
+0.2569792693467089
+22
+0.19156135043889155
+32
+1.88301756969917
+13
+0.2569792693467089
+23
+0.19156135043889155
+33
+1.88301756969917
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.2569792693467089
+20
+0.19156135043889155
+30
+1.88301756969917
+11
+-0.2660445164138411
+21
+0.19156135043889155
+31
+1.8141601820061808
+12
+-0.2569792693467132
+22
+0.19156135043888933
+32
+1.88301756969917
+13
+-0.2569792693467132
+23
+0.19156135043888933
+33
+1.88301756969917
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.2569792693467089
+20
+0.19156135043889155
+30
+1.88301756969917
+11
+-0.2569792693467132
+21
+0.19156135043888933
+31
+1.88301756969917
+12
+-0.23040130975192985
+22
+0.19156135043889155
+32
+1.9471824402130984
+13
+-0.23040130975192985
+23
+0.19156135043889155
+33
+1.9471824402130984
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.2569792693467089
+20
+0.19156135043889155
+30
+1.88301756969917
+11
+-0.23040130975192985
+21
+0.19156135043889155
+31
+1.9471824402130984
+12
+0.2304013097519334
+22
+0.19156135043889155
+32
+1.9471824402130984
+13
+0.2304013097519334
+23
+0.19156135043889155
+33
+1.9471824402130984
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.2304013097519334
+20
+0.19156135043889155
+30
+1.9471824402130984
+11
+-0.23040130975192985
+21
+0.19156135043889155
+31
+1.9471824402130984
+12
+-0.18812188165372756
+22
+0.19156135043889155
+32
+2.00228206365989
+13
+-0.18812188165372756
+23
+0.19156135043889155
+33
+2.00228206365989
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.2304013097519334
+20
+0.19156135043889155
+30
+1.9471824402130984
+11
+-0.18812188165372756
+21
+0.19156135043889155
+31
+2.00228206365989
+12
+0.188121881653721
+22
+0.19156135043889155
+32
+2.002282063659892
+13
+0.188121881653721
+23
+0.19156135043889155
+33
+2.002282063659892
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.188121881653721
+20
+0.19156135043889155
+30
+2.002282063659892
+11
+-0.18812188165372756
+21
+0.19156135043889155
+31
+2.00228206365989
+12
+-0.1330222582069191
+22
+0.19156135043888822
+32
+2.0445614917581056
+13
+-0.1330222582069191
+23
+0.19156135043888822
+33
+2.0445614917581056
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.188121881653721
+20
+0.19156135043889155
+30
+2.002282063659892
+11
+-0.1330222582069191
+21
+0.19156135043888822
+31
+2.0445614917581056
+12
+0.13302225820692148
+22
+0.19156135043888933
+32
+2.0445614917581056
+13
+0.13302225820692148
+23
+0.19156135043888933
+33
+2.0445614917581056
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.13302225820692148
+20
+0.19156135043888933
+30
+2.0445614917581056
+11
+-0.1330222582069191
+21
+0.19156135043888822
+31
+2.0445614917581056
+12
+-0.06885738769298949
+22
+0.19156135043889155
+32
+2.0711394513528925
+13
+-0.06885738769298949
+23
+0.19156135043889155
+33
+2.0711394513528925
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.13302225820692148
+20
+0.19156135043888933
+30
+2.0445614917581056
+11
+-0.06885738769298949
+21
+0.19156135043889155
+31
+2.0711394513528925
+12
+0.06885738769298744
+22
+0.19156135043889044
+32
+2.0711394513528925
+13
+0.06885738769298744
+23
+0.19156135043889044
+33
+2.0711394513528925
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.06885738769298744
+20
+0.19156135043889044
+30
+2.0711394513528925
+11
+-0.06885738769298949
+21
+0.19156135043889155
+31
+2.0711394513528925
+12
+-9.992007221626409e-16
+22
+0.19156135043889155
+32
+2.08020469842002
+13
+-9.992007221626409e-16
+23
+0.19156135043889155
+33
+2.08020469842002
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.26604451641384186
+20
+0.19156135043889044
+30
+1.8141601820061786
+11
+0.261211438220872
+21
+0.19156135043889044
+31
+1.777449308444807
+12
+6.661338147750939e-16
+22
+0.19156135043889155
+32
+1.8141601820061741
+13
+6.661338147750939e-16
+23
+0.19156135043889155
+33
+1.8141601820061741
+70
+12
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.18812188165372756
+20
+0.19156135043889044
+30
+1.6260383003524492
+11
+-0.3424871358064196
+21
+-2.220446049250313e-15
+31
+1.4716730461997534
+12
+-0.1881218816537231
+22
+-2.220446049250313e-15
+32
+1.626038300352452
+13
+-0.1881218816537231
+23
+-2.220446049250313e-15
+33
+1.626038300352452
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.3424871358064196
+20
+-2.220446049250313e-15
+30
+1.4716730461997534
+11
+-0.18812188165372756
+21
+0.19156135043889044
+31
+1.6260383003524492
+12
+-0.33052374502961596
+22
+0.08856357055999653
+32
+1.4836364369765538
+13
+-0.33052374502961596
+23
+0.08856357055999653
+33
+1.4836364369765538
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.33052374502961596
+20
+0.08856357055999653
+30
+1.4836364369765538
+11
+-0.18812188165372756
+21
+0.19156135043889044
+31
+1.6260383003524492
+12
+-0.2955708619933719
+22
+0.1706479167364875
+32
+1.518589320012799
+13
+-0.2955708619933719
+23
+0.1706479167364875
+33
+1.518589320012799
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.2955708619933719
+20
+0.1706479167364875
+30
+1.518589320012799
+11
+-0.18812188165372756
+21
+0.19156135043889044
+31
+1.6260383003524492
+12
+-0.24034094956198906
+22
+0.2403409495619936
+32
+1.5738192324441853
+13
+-0.24034094956198906
+23
+0.2403409495619936
+33
+1.5738192324441853
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+-0.18812188165372756
+21
+0.19156135043889044
+31
+1.6260383003524492
+12
+6.661338147750939e-16
+22
+0.19156135043889155
+32
+1.8141601820061741
+13
+6.661338147750939e-16
+23
+0.19156135043889155
+33
+1.8141601820061741
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+6.661338147750939e-16
+21
+0.19156135043889155
+31
+1.8141601820061741
+12
+1.1102230246251565e-16
+22
+0.33379067100000304
+32
+1.8141601820061741
+13
+1.1102230246251565e-16
+23
+0.33379067100000304
+33
+1.8141601820061741
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+1.1102230246251565e-16
+21
+0.33379067100000304
+31
+1.8141601820061741
+12
+-0.16904149407111246
+22
+0.2927884563185241
+32
+1.645118687935059
+13
+-0.16904149407111246
+23
+0.2927884563185241
+33
+1.645118687935059
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.16904149407111246
+20
+0.2927884563185241
+30
+1.645118687935059
+11
+1.1102230246251565e-16
+21
+0.33379067100000304
+31
+1.8141601820061741
+12
+-0.08696289916304184
+22
+0.32454995804996933
+32
+1.7271972828431308
+13
+-0.08696289916304184
+23
+0.32454995804996933
+33
+1.7271972828431308
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.33052374502961596
+20
+0.08856357055999653
+30
+1.4836364369765538
+11
+-0.36643493196576155
+21
+6.894044639604857e-07
+31
+0.36643493196577
+12
+-0.3424871358064196
+22
+-2.220446049250313e-15
+32
+1.4716730461997534
+13
+-0.3424871358064196
+23
+-2.220446049250313e-15
+33
+1.4716730461997534
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.36643493196576155
+20
+6.894044639604857e-07
+30
+0.36643493196577
+11
+-0.33052374502961596
+21
+0.08856357055999653
+31
+1.4836364369765538
+12
+-0.3541898489439894
+22
+0.09490488399184593
+32
+0.3541898489439996
+13
+-0.3541898489439894
+23
+0.09490488399184593
+33
+0.3541898489439996
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.2955708619933719
+20
+0.1706479167364875
+30
+1.518589320012799
+11
+-0.3541898489439894
+21
+0.09490488399184593
+31
+0.3541898489439996
+12
+-0.33052374502961596
+22
+0.08856357055999653
+32
+1.4836364369765538
+13
+-0.33052374502961596
+23
+0.08856357055999653
+33
+1.4836364369765538
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.3541898489439894
+20
+0.09490488399184593
+30
+0.3541898489439996
+11
+-0.2955708619933719
+21
+0.1706479167364875
+31
+1.518589320012799
+12
+-0.34654102806927234
+22
+0.11372420208085299
+32
+0.34654102806927917
+13
+-0.34654102806927234
+23
+0.11372420208085299
+33
+0.34654102806927917
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.31821039848923144
+20
+0.18371885922669984
+30
+0.31821039848924043
+11
+-0.34654102806927234
+21
+0.11372420208085299
+31
+0.34654102806927917
+12
+-0.2955708619933719
+22
+0.1706479167364875
+32
+1.518589320012799
+13
+-0.2955708619933719
+23
+0.1706479167364875
+33
+1.518589320012799
+70
+0
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+-0.31821039848923144
+21
+0.18371885922669984
+31
+0.31821039848924043
+12
+-0.2955708619933719
+22
+0.1706479167364875
+32
+1.518589320012799
+13
+-0.2955708619933719
+23
+0.1706479167364875
+33
+1.518589320012799
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.31821039848923144
+20
+0.18371885922669984
+30
+0.31821039848924043
+11
+-0.24034094956198906
+21
+0.2403409495619936
+31
+1.5738192324441853
+12
+-0.30780841448952007
+22
+0.1975803495231122
+32
+0.30780841448952795
+13
+-0.30780841448952007
+23
+0.1975803495231122
+33
+0.30780841448952795
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+-0.2885829061834132
+21
+0.22332138636309273
+31
+0.28858290618342114
+12
+-0.30780841448952007
+22
+0.1975803495231122
+32
+0.30780841448952795
+13
+-0.30780841448952007
+23
+0.1975803495231122
+33
+0.30780841448952795
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.2885829061834132
+20
+0.22332138636309273
+30
+0.28858290618342114
+11
+-0.24034094956198906
+21
+0.2403409495619936
+31
+1.5738192324441853
+12
+-0.2606802535046579
+22
+0.26068025350466195
+32
+0.2606802535046641
+13
+-0.2606802535046579
+23
+0.26068025350466195
+33
+0.2606802535046641
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+-0.19372715732247747
+21
+0.3138879622371804
+31
+0.19372715732248486
+12
+-0.2606802535046579
+22
+0.26068025350466195
+32
+0.2606802535046641
+13
+-0.2606802535046579
+23
+0.26068025350466195
+33
+0.2606802535046641
+70
+0
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.19372715732247747
+20
+0.3138879622371804
+30
+0.19372715732248486
+11
+-0.16904149407111246
+21
+0.2927884563185241
+31
+1.645118687935059
+12
+-0.18514211013161566
+22
+0.3206755413684731
+32
+0.1851421101316219
+13
+-0.18514211013161566
+23
+0.3206755413684731
+33
+0.1851421101316219
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.16904149407111246
+20
+0.2927884563185241
+30
+1.645118687935059
+11
+-0.19372715732247747
+21
+0.3138879622371804
+31
+0.19372715732248486
+12
+-0.24034094956198906
+22
+0.2403409495619936
+32
+1.5738192324441853
+13
+-0.24034094956198906
+23
+0.2403409495619936
+33
+1.5738192324441853
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.16904149407111246
+20
+0.2927884563185241
+30
+1.645118687935059
+11
+-0.1013377420365758
+21
+0.3573720124041593
+31
+0.1013377420365838
+12
+-0.18514211013161566
+22
+0.3206755413684731
+32
+0.1851421101316219
+13
+-0.18514211013161566
+23
+0.3206755413684731
+33
+0.1851421101316219
+70
+0
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.1013377420365758
+20
+0.3573720124041593
+30
+0.1013377420365838
+11
+-0.08696289916304184
+21
+0.32454995804996933
+31
+1.7271972828431308
+12
+-0.09633958547085791
+22
+0.3595442277573727
+32
+0.09633958547086535
+13
+-0.09633958547085791
+23
+0.3595442277573727
+33
+0.09633958547086535
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.08696289916304184
+20
+0.32454995804996933
+30
+1.7271972828431308
+11
+-0.1013377420365758
+21
+0.3573720124041593
+31
+0.1013377420365838
+12
+-0.16904149407111246
+22
+0.2927884563185241
+32
+1.645118687935059
+13
+-0.16904149407111246
+23
+0.2927884563185241
+33
+1.645118687935059
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.08696289916304184
+20
+0.32454995804996933
+30
+1.7271972828431308
+11
+1.1102230246251565e-16
+21
+0.37319459270527366
+31
+0.05244907956522271
+12
+-0.002638372221004881
+22
+0.3728562895769836
+32
+0.05240153416118987
+13
+-0.002638372221004881
+23
+0.3728562895769836
+33
+0.05240153416118987
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+1.1102230246251565e-16
+20
+0.37319459270527366
+30
+0.05244907956522271
+11
+-0.08696289916304184
+21
+0.32454995804996933
+31
+1.7271972828431308
+12
+1.1102230246251565e-16
+22
+0.33379067100000304
+32
+1.8141601820061741
+13
+1.1102230246251565e-16
+23
+0.33379067100000304
+33
+1.8141601820061741
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.09660018260574987
+20
+0.36051678950509547
+30
+0.050667330521278475
+11
+0.16715806244605846
+21
+0.28952625705134216
+31
+1.7906676483827717
+12
+0.18667566717603135
+22
+0.3233317400856974
+32
+0.04544131263742729
+13
+0.18667566717603135
+23
+0.3233317400856974
+33
+0.04544131263742729
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.16715806244605846
+20
+0.28952625705134216
+30
+1.7906676483827717
+11
+0.09660018260574987
+21
+0.36051678950509547
+31
+0.050667330521278475
+12
+0.08646172679066877
+22
+0.3226795572929172
+32
+1.8020087787532109
+13
+0.08646172679066877
+23
+0.3226795572929172
+33
+1.8020087787532109
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.3731945927052738
+20
+1.1102230246251565e-15
+30
+0.05244907956522721
+11
+0.32339898045021165
+21
+0.08665449564468308
+31
+1.7687094193518036
+12
+0.334843235733576
+22
+0.0
+32
+1.7671010341617321
+13
+0.334843235733576
+23
+0.0
+33
+1.7671010341617321
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.32339898045021165
+20
+0.08665449564468308
+30
+1.7687094193518036
+11
+0.3731945927052738
+21
+1.1102230246251565e-15
+31
+0.05244907956522721
+12
+0.360516789505095
+22
+0.09660018260575365
+32
+0.050667330521278475
+13
+0.360516789505095
+23
+0.09660018260575365
+33
+0.050667330521278475
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.3233317400856941
+20
+0.18667566717602557
+30
+0.04544131263742618
+11
+0.23655144370181413
+21
+0.23655144370181402
+31
+1.7809150446582704
+12
+0.28986029081458276
+22
+0.16735091692918358
+32
+1.773422974788019
+13
+0.28986029081458276
+23
+0.16735091692918358
+33
+1.773422974788019
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.23655144370181413
+20
+0.23655144370181402
+30
+1.7809150446582704
+11
+0.3233317400856941
+21
+0.18667566717602557
+31
+0.04544131263742618
+12
+0.2800330587934533
+22
+0.24332527544562987
+32
+0.0393560798271011
+13
+0.2800330587934533
+23
+0.24332527544562987
+33
+0.0393560798271011
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.23655144370181413
+20
+0.23655144370181402
+30
+1.7809150446582704
+11
+0.2800330587934533
+21
+0.24332527544562987
+31
+0.0393560798271011
+12
+0.2641308495701662
+22
+0.26413084957016775
+32
+0.037121170069247644
+13
+0.2641308495701662
+23
+0.26413084957016775
+33
+0.037121170069247644
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.18667566717603135
+20
+0.3233317400856974
+30
+0.04544131263742729
+11
+0.23655144370181413
+21
+0.23655144370181402
+31
+1.7809150446582704
+12
+0.2641308495701662
+22
+0.26413084957016775
+32
+0.037121170069247644
+13
+0.2641308495701662
+23
+0.26413084957016775
+33
+0.037121170069247644
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.23655144370181413
+20
+0.23655144370181402
+30
+1.7809150446582704
+11
+0.18667566717603135
+21
+0.3233317400856974
+31
+0.04544131263742729
+12
+0.16715806244605846
+22
+0.28952625705134216
+32
+1.7906676483827717
+13
+0.16715806244605846
+23
+0.28952625705134216
+33
+1.7906676483827717
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.360516789505095
+20
+0.09660018260575365
+30
+0.050667330521278475
+11
+0.28986029081458276
+21
+0.16735091692918358
+31
+1.773422974788019
+12
+0.32339898045021165
+22
+0.08665449564468308
+32
+1.7687094193518036
+13
+0.32339898045021165
+23
+0.08665449564468308
+33
+1.7687094193518036
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.28986029081458276
+20
+0.16735091692918358
+30
+1.773422974788019
+11
+0.360516789505095
+21
+0.09660018260575365
+31
+0.050667330521278475
+12
+0.3233317400856941
+22
+0.18667566717602557
+32
+0.04544131263742618
+13
+0.3233317400856941
+23
+0.18667566717602557
+33
+0.04544131263742618
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.03798528133991513
+20
+0.3682094062559258
+30
+0.051748457300486994
+11
+0.08646172679066877
+21
+0.3226795572929172
+31
+1.8020087787532109
+12
+0.09660018260574987
+22
+0.36051678950509547
+32
+0.050667330521278475
+13
+0.09660018260574987
+23
+0.36051678950509547
+33
+0.050667330521278475
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.08646172679066877
+20
+0.3226795572929172
+30
+1.8020087787532109
+11
+0.03798528133991513
+21
+0.3682094062559258
+31
+0.051748457300486994
+12
+1.1102230246251565e-16
+22
+0.37319459270527366
+32
+0.05244907956522271
+13
+1.1102230246251565e-16
+23
+0.37319459270527366
+33
+0.05244907956522271
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.08646172679066877
+20
+0.3226795572929172
+30
+1.8020087787532109
+11
+1.1102230246251565e-16
+21
+0.37319459270527366
+31
+0.05244907956522271
+12
+1.1102230246251565e-16
+22
+0.33379067100000304
+32
+1.8141601820061741
+13
+1.1102230246251565e-16
+23
+0.33379067100000304
+33
+1.8141601820061741
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.26121143822087256
+20
+0.0
+30
+1.7774493084448049
+11
+0.26604451641384186
+21
+0.19156135043889044
+31
+1.8141601820061786
+12
+0.2660445164138424
+22
+-2.220446049250313e-15
+32
+1.814160182006172
+13
+0.2660445164138424
+23
+-2.220446049250313e-15
+33
+1.814160182006172
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.26604451641384186
+20
+0.19156135043889044
+30
+1.8141601820061786
+11
+0.26121143822087256
+21
+0.0
+31
+1.7774493084448049
+12
+0.261211438220872
+22
+0.19156135043889044
+32
+1.777449308444807
+13
+0.261211438220872
+23
+0.19156135043889044
+33
+1.777449308444807
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+6.661338147750939e-16
+20
+0.19156135043889155
+30
+1.8141601820061741
+11
+0.08646172679066877
+21
+0.3226795572929172
+31
+1.8020087787532109
+12
+1.1102230246251565e-16
+22
+0.33379067100000304
+32
+1.8141601820061741
+13
+1.1102230246251565e-16
+23
+0.33379067100000304
+33
+1.8141601820061741
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.08646172679066877
+20
+0.3226795572929172
+30
+1.8020087787532109
+11
+6.661338147750939e-16
+21
+0.19156135043889155
+31
+1.8141601820061741
+12
+0.261211438220872
+22
+0.19156135043889044
+32
+1.777449308444807
+13
+0.261211438220872
+23
+0.19156135043889044
+33
+1.777449308444807
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.08646172679066877
+20
+0.3226795572929172
+30
+1.8020087787532109
+11
+0.261211438220872
+21
+0.19156135043889044
+31
+1.777449308444807
+12
+0.16715806244605846
+22
+0.28952625705134216
+32
+1.7906676483827717
+13
+0.16715806244605846
+23
+0.28952625705134216
+33
+1.7906676483827717
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.16715806244605846
+20
+0.28952625705134216
+30
+1.7906676483827717
+11
+0.261211438220872
+21
+0.19156135043889044
+31
+1.777449308444807
+12
+0.23655144370181413
+22
+0.23655144370181402
+32
+1.7809150446582704
+13
+0.23655144370181413
+23
+0.23655144370181402
+33
+1.7809150446582704
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.23655144370181413
+20
+0.23655144370181402
+30
+1.7809150446582704
+11
+0.261211438220872
+21
+0.19156135043889044
+31
+1.777449308444807
+12
+0.28986029081458276
+22
+0.16735091692918358
+32
+1.773422974788019
+13
+0.28986029081458276
+23
+0.16735091692918358
+33
+1.773422974788019
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.28986029081458276
+20
+0.16735091692918358
+30
+1.773422974788019
+11
+0.261211438220872
+21
+0.19156135043889044
+31
+1.777449308444807
+12
+0.26121143822087256
+22
+0.0
+32
+1.7774493084448049
+13
+0.26121143822087256
+23
+0.0
+33
+1.7774493084448049
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.28986029081458276
+20
+0.16735091692918358
+30
+1.773422974788019
+11
+0.26121143822087256
+21
+0.0
+31
+1.7774493084448049
+12
+0.334843235733576
+22
+0.0
+32
+1.7671010341617321
+13
+0.334843235733576
+23
+0.0
+33
+1.7671010341617321
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.28986029081458276
+20
+0.16735091692918358
+30
+1.773422974788019
+11
+0.334843235733576
+21
+0.0
+31
+1.7671010341617321
+12
+0.32339898045021165
+22
+0.08665449564468308
+32
+1.7687094193518036
+13
+0.32339898045021165
+23
+0.08665449564468308
+33
+1.7687094193518036
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.09633958547085791
+20
+0.3595442277573727
+30
+0.09633958547086535
+11
+-0.002638372221004881
+21
+0.3728562895769836
+31
+0.05240153416118987
+12
+-0.051500277979212306
+22
+0.3664435186276659
+32
+0.05150027797922019
+13
+-0.051500277979212306
+23
+0.3664435186276659
+33
+0.05150027797922019
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.002638372221004881
+20
+0.3728562895769836
+30
+0.05240153416118987
+11
+-0.09633958547085791
+21
+0.3595442277573727
+31
+0.09633958547086535
+12
+-0.08696289916304184
+22
+0.32454995804996933
+32
+1.7271972828431308
+13
+-0.08696289916304184
+23
+0.32454995804996933
+33
+1.7271972828431308
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.36643493196576155
+20
+6.894044639604857e-07
+30
+0.36643493196577
+11
+-0.1844404161195001
+21
+0.049420660550877904
+31
+0.1844404161195074
+12
+-0.18812185528866687
+22
+3.539292661169924e-07
+32
+0.18812185528867426
+13
+-0.18812185528866687
+23
+3.539292661169924e-07
+33
+0.18812185528867426
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.1844404161195001
+20
+0.049420660550877904
+30
+0.1844404161195074
+11
+-0.36643493196576155
+21
+6.894044639604857e-07
+31
+0.36643493196577
+12
+-0.3541898489439894
+22
+0.09490488399184593
+32
+0.3541898489439996
+13
+-0.3541898489439894
+23
+0.09490488399184593
+33
+0.3541898489439996
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.1844404161195001
+20
+0.049420660550877904
+30
+0.1844404161195074
+11
+-0.3541898489439894
+21
+0.09490488399184593
+31
+0.3541898489439996
+12
+-0.17298028978074165
+22
+0.09987021686940978
+32
+0.17298028978074903
+13
+-0.17298028978074165
+23
+0.09987021686940978
+33
+0.17298028978074903
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.17298028978074165
+20
+0.09987021686940978
+30
+0.17298028978074903
+11
+-0.3541898489439894
+21
+0.09490488399184593
+31
+0.3541898489439996
+12
+-0.34654102806927234
+22
+0.11372420208085299
+32
+0.34654102806927917
+13
+-0.34654102806927234
+23
+0.11372420208085299
+33
+0.34654102806927917
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.17298028978074165
+20
+0.09987021686940978
+30
+0.17298028978074903
+11
+-0.34654102806927234
+21
+0.11372420208085299
+31
+0.34654102806927917
+12
+-0.15240279554847375
+22
+0.15240279554847047
+32
+0.15240279554848163
+13
+-0.15240279554847375
+23
+0.15240279554847047
+33
+0.15240279554848163
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.15240279554847375
+20
+0.15240279554847047
+30
+0.15240279554848163
+11
+-0.34654102806927234
+21
+0.11372420208085299
+31
+0.34654102806927917
+12
+-0.31821039848923144
+22
+0.18371885922669984
+32
+0.31821039848924043
+13
+-0.31821039848923144
+23
+0.18371885922669984
+33
+0.31821039848924043
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.15240279554847375
+20
+0.15240279554847047
+30
+0.15240279554848163
+11
+-0.31821039848923144
+21
+0.18371885922669984
+31
+0.31821039848924043
+12
+-0.1330222582069191
+22
+0.18585839010548322
+32
+0.13302225820692531
+13
+-0.1330222582069191
+23
+0.18585839010548322
+33
+0.13302225820692531
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.1330222582069191
+20
+0.18585839010548322
+30
+0.13302225820692531
+11
+-0.31821039848923144
+21
+0.18371885922669984
+31
+0.31821039848924043
+12
+-0.30780841448952007
+22
+0.1975803495231122
+32
+0.30780841448952795
+13
+-0.30780841448952007
+23
+0.1975803495231122
+33
+0.30780841448952795
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.1330222582069191
+20
+0.18585839010548322
+30
+0.13302225820692531
+11
+-0.30780841448952007
+21
+0.1975803495231122
+31
+0.30780841448952795
+12
+-0.11825835860108969
+22
+0.2048294855167876
+32
+0.11825835860109529
+13
+-0.11825835860108969
+23
+0.2048294855167876
+33
+0.11825835860109529
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.11825835860108969
+20
+0.2048294855167876
+30
+0.11825835860109529
+11
+-0.30780841448952007
+21
+0.1975803495231122
+31
+0.30780841448952795
+12
+-0.2885829061834132
+22
+0.22332138636309273
+32
+0.28858290618342114
+13
+-0.2885829061834132
+23
+0.22332138636309273
+33
+0.28858290618342114
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.11825835860108969
+20
+0.2048294855167876
+30
+0.11825835860109529
+11
+-0.2885829061834132
+21
+0.22332138636309273
+31
+0.28858290618342114
+12
+-0.06885738769298949
+22
+0.2472510609542653
+32
+0.06885738769299571
+13
+-0.06885738769298949
+23
+0.2472510609542653
+33
+0.06885738769299571
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.06885738769298949
+20
+0.2472510609542653
+30
+0.06885738769299571
+11
+-0.2885829061834132
+21
+0.22332138636309273
+31
+0.28858290618342114
+12
+-0.2606802535046579
+22
+0.26068025350466195
+32
+0.2606802535046641
+13
+-0.2606802535046579
+23
+0.26068025350466195
+33
+0.2606802535046641
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.06885738769298949
+20
+0.2472510609542653
+30
+0.06885738769299571
+11
+-0.2606802535046579
+21
+0.26068025350466195
+31
+0.2606802535046641
+12
+-0.06658844156786636
+22
+0.24851144712811246
+32
+0.06658844156787258
+13
+-0.06658844156786636
+23
+0.24851144712811246
+33
+0.06658844156787258
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.06658844156786636
+20
+0.24851144712811246
+30
+0.06658844156787258
+11
+-0.2606802535046579
+21
+0.26068025350466195
+31
+0.2606802535046641
+12
+-0.03605586729290833
+22
+0.25655082645025573
+32
+0.036055867292911215
+13
+-0.03605586729290833
+23
+0.25655082645025573
+33
+0.036055867292911215
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.03605586729290833
+20
+0.25655082645025573
+30
+0.036055867292911215
+11
+-0.2606802535046579
+21
+0.26068025350466195
+31
+0.2606802535046641
+12
+-0.051500277979212306
+22
+0.3664435186276659
+32
+0.05150027797922019
+13
+-0.051500277979212306
+23
+0.3664435186276659
+33
+0.05150027797922019
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.051500277979212306
+20
+0.3664435186276659
+30
+0.05150027797922019
+11
+-0.2606802535046579
+21
+0.26068025350466195
+31
+0.2606802535046641
+12
+-0.19372715732247747
+22
+0.3138879622371804
+32
+0.19372715732248486
+13
+-0.19372715732247747
+23
+0.3138879622371804
+33
+0.19372715732248486
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.051500277979212306
+20
+0.3664435186276659
+30
+0.05150027797922019
+11
+-0.19372715732247747
+21
+0.3138879622371804
+31
+0.19372715732248486
+12
+-0.18514211013161566
+22
+0.3206755413684731
+32
+0.1851421101316219
+13
+-0.18514211013161566
+23
+0.3206755413684731
+33
+0.1851421101316219
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.051500277979212306
+20
+0.3664435186276659
+30
+0.05150027797922019
+11
+-0.18514211013161566
+21
+0.3206755413684731
+31
+0.1851421101316219
+12
+-0.1013377420365758
+22
+0.3573720124041593
+32
+0.1013377420365838
+13
+-0.1013377420365758
+23
+0.3573720124041593
+33
+0.1013377420365838
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.051500277979212306
+20
+0.3664435186276659
+30
+0.05150027797922019
+11
+-0.1013377420365758
+21
+0.3573720124041593
+31
+0.1013377420365838
+12
+-0.09633958547085791
+22
+0.3595442277573727
+32
+0.09633958547086535
+13
+-0.09633958547085791
+23
+0.3595442277573727
+33
+0.09633958547086535
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.002638372221004881
+20
+0.3728562895769836
+30
+0.05240153416118987
+11
+-0.03605586729290833
+21
+0.25655082645025573
+31
+0.036055867292911215
+12
+-0.051500277979212306
+22
+0.3664435186276659
+32
+0.05150027797922019
+13
+-0.051500277979212306
+23
+0.3664435186276659
+33
+0.05150027797922019
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+-0.03605586729290833
+20
+0.25655082645025573
+30
+0.036055867292911215
+11
+-0.002638372221004881
+21
+0.3728562895769836
+31
+0.05240153416118987
+12
+1.2212453270876722e-15
+22
+0.2612114382208691
+32
+0.036710873561378254
+13
+1.2212453270876722e-15
+23
+0.2612114382208691
+33
+0.036710873561378254
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+1.2212453270876722e-15
+20
+0.2612114382208691
+30
+0.036710873561378254
+11
+-0.002638372221004881
+21
+0.3728562895769836
+31
+0.05240153416118987
+12
+1.1102230246251565e-16
+22
+0.37319459270527366
+32
+0.05244907956522271
+13
+1.1102230246251565e-16
+23
+0.37319459270527366
+33
+0.05244907956522271
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+1.2212453270876722e-15
+20
+0.2612114382208691
+30
+0.036710873561378254
+11
+1.1102230246251565e-16
+21
+0.37319459270527366
+31
+0.05244907956522271
+12
+0.03798528133991513
+22
+0.3682094062559258
+32
+0.051748457300486994
+13
+0.03798528133991513
+23
+0.3682094062559258
+33
+0.051748457300486994
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+1.2212453270876722e-15
+20
+0.2612114382208691
+30
+0.036710873561378254
+11
+0.03798528133991513
+21
+0.3682094062559258
+31
+0.051748457300486994
+12
+0.0676483697554201
+22
+0.2524671529764305
+32
+0.03548194441425151
+13
+0.0676483697554201
+23
+0.2524671529764305
+33
+0.03548194441425151
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.0676483697554201
+20
+0.2524671529764305
+30
+0.03548194441425151
+11
+0.03798528133991513
+21
+0.3682094062559258
+31
+0.051748457300486994
+12
+0.09660018260574987
+22
+0.36051678950509547
+32
+0.050667330521278475
+13
+0.09660018260574987
+23
+0.36051678950509547
+33
+0.050667330521278475
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.0676483697554201
+20
+0.2524671529764305
+30
+0.03548194441425151
+11
+0.09660018260574987
+21
+0.36051678950509547
+31
+0.050667330521278475
+12
+0.1309243680317843
+22
+0.2267676573798948
+32
+0.031870115851683534
+13
+0.1309243680317843
+23
+0.2267676573798948
+33
+0.031870115851683534
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.1309243680317843
+20
+0.2267676573798948
+30
+0.031870115851683534
+11
+0.09660018260574987
+21
+0.36051678950509547
+31
+0.050667330521278475
+12
+0.18667566717603135
+22
+0.3233317400856974
+32
+0.04544131263742729
+13
+0.18667566717603135
+23
+0.3233317400856974
+33
+0.04544131263742729
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.1309243680317843
+20
+0.2267676573798948
+30
+0.031870115851683534
+11
+0.18667566717603135
+21
+0.3233317400856974
+31
+0.04544131263742729
+12
+0.18569241579901274
+22
+0.18569241579901485
+32
+0.026097367114300607
+13
+0.18569241579901274
+23
+0.18569241579901485
+33
+0.026097367114300607
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.18569241579901274
+20
+0.18569241579901485
+30
+0.026097367114300607
+11
+0.18667566717603135
+21
+0.3233317400856974
+31
+0.04544131263742729
+12
+0.2641308495701662
+22
+0.26413084957016775
+32
+0.037121170069247644
+13
+0.2641308495701662
+23
+0.26413084957016775
+33
+0.037121170069247644
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.2641308495701662
+20
+0.26413084957016775
+30
+0.037121170069247644
+11
+0.22676765737989824
+21
+0.13092436803178253
+31
+0.03187011585168126
+12
+0.18569241579901274
+22
+0.18569241579901485
+32
+0.026097367114300607
+13
+0.18569241579901274
+23
+0.18569241579901485
+33
+0.026097367114300607
+70
+1
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.22676765737989824
+20
+0.13092436803178253
+30
+0.03187011585168126
+11
+0.2641308495701662
+21
+0.26413084957016775
+31
+0.037121170069247644
+12
+0.25246715297643174
+22
+0.06764836975541832
+32
+0.03548194441424812
+13
+0.25246715297643174
+23
+0.06764836975541832
+33
+0.03548194441424812
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.25246715297643174
+20
+0.06764836975541832
+30
+0.03548194441424812
+11
+0.2641308495701662
+21
+0.26413084957016775
+31
+0.037121170069247644
+12
+0.2612114382208709
+22
+2.220446049250313e-15
+32
+0.036710873561377144
+13
+0.2612114382208709
+23
+2.220446049250313e-15
+33
+0.036710873561377144
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.2612114382208709
+20
+2.220446049250313e-15
+30
+0.036710873561377144
+11
+0.2641308495701662
+21
+0.26413084957016775
+31
+0.037121170069247644
+12
+0.3731945927052738
+22
+1.1102230246251565e-15
+32
+0.05244907956522721
+13
+0.3731945927052738
+23
+1.1102230246251565e-15
+33
+0.05244907956522721
+70
+3
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.3731945927052738
+20
+1.1102230246251565e-15
+30
+0.05244907956522721
+11
+0.2641308495701662
+21
+0.26413084957016775
+31
+0.037121170069247644
+12
+0.2800330587934533
+22
+0.24332527544562987
+32
+0.0393560798271011
+13
+0.2800330587934533
+23
+0.24332527544562987
+33
+0.0393560798271011
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.3731945927052738
+20
+1.1102230246251565e-15
+30
+0.05244907956522721
+11
+0.2800330587934533
+21
+0.24332527544562987
+31
+0.0393560798271011
+12
+0.3233317400856941
+22
+0.18667566717602557
+32
+0.04544131263742618
+13
+0.3233317400856941
+23
+0.18667566717602557
+33
+0.04544131263742618
+70
+13
+ 0
+3DFACE
+ 8
+finger proximal
+10
+0.3731945927052738
+20
+1.1102230246251565e-15
+30
+0.05244907956522721
+11
+0.3233317400856941
+21
+0.18667566717602557
+31
+0.04544131263742618
+12
+0.360516789505095
+22
+0.09660018260575365
+32
+0.050667330521278475
+13
+0.360516789505095
+23
+0.09660018260575365
+33
+0.050667330521278475
+70
+1
+ 0
+LINE
+ 8
+finger proximal
+10
+2.886579864025407e-15
+20
+1.1102230246251565e-15
+30
+6.716849298982197e-15
+11
+3.4416913763379853e-15
+21
+1.1102230246251565e-15
+31
+0.036055867292914545
+ 0
+LINE
+ 8
+finger proximal
+10
+2.886579864025407e-15
+20
+1.1102230246251565e-15
+30
+6.716849298982197e-15
+11
+2.886579864025407e-15
+21
+0.37319459270527366
+31
+5.6066262743570405e-15
+ 0
+LINE
+ 8
+finger proximal
+10
+2.886579864025407e-15
+20
+1.1102230246251565e-15
+30
+6.716849298982197e-15
+11
+0.37319459270527433
+21
+0.0
+31
+4.496403249731884e-15
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06818492398575215
+20
+0.017821605409913677
+30
+1.4094380312409234
+11
+-0.11687444975825895
+21
+0.06651113118242014
+31
+1.3828600716461388
+12
+-0.13016342955565008
+22
+0.03442869592545578
+32
+1.3828600716461388
+13
+-0.13016342955565008
+23
+0.03442869592545578
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.11687444975825895
+20
+0.06651113118242014
+30
+1.3828600716461388
+11
+-0.06818492398575215
+21
+0.017821605409913677
+31
+1.4094380312409234
+12
+-0.06130604186265742
+22
+0.034428695925455444
+32
+1.4094380312409234
+13
+-0.06130604186265742
+23
+0.034428695925455444
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.05036332065479815
+21
+0.048689527851465464
+31
+1.4094380312409234
+12
+-0.06130604186265742
+22
+0.034428695925455444
+32
+1.4094380312409234
+13
+-0.06130604186265742
+23
+0.034428695925455444
+33
+1.4094380312409234
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.05795845209807354
+20
+0.034428695925455666
+30
+1.4094380312409234
+11
+0.09238714594456965
+21
+0.09406094290582162
+31
+1.3828600716461388
+12
+0.047015730890213825
+22
+0.04868952785146535
+32
+1.4094380312409234
+13
+0.047015730890213825
+23
+0.04868952785146535
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09238714594456965
+20
+0.09406094290582162
+30
+1.3828600716461388
+11
+0.05795845209807354
+21
+0.034428695925455666
+31
+1.4094380312409234
+12
+0.11352685999367468
+22
+0.06651113118242036
+32
+1.3828600716461388
+13
+0.11352685999367468
+23
+0.06651113118242036
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2586530642290084
+20
+0.06885738977195188
+30
+1.1524587618942086
+11
+-0.2299631369342784
+21
+0.13180291516579612
+31
+1.133935070472781
+12
+-0.25742830375937065
+22
+0.06852921619319091
+32
+1.1428276089410967
+13
+-0.25742830375937065
+23
+0.06852921619319091
+33
+1.1428276089410967
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2299631369342784
+20
+0.13180291516579612
+30
+1.133935070472781
+11
+-0.2586530642290084
+21
+0.06885738977195188
+31
+1.1524587618942086
+12
+-0.23207510463422537
+22
+0.13302226028588032
+32
+1.1524587618942086
+13
+-0.23207510463422537
+23
+0.13302226028588032
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18736621068130693
+20
+0.18569241787797425
+30
+1.1263613947799127
+11
+-0.1346960530892126
+21
+0.2304013118308924
+31
+1.1524587618942086
+12
+-0.13259816291407706
+22
+0.22676765945885902
+32
+1.1205886460425298
+13
+-0.13259816291407706
+23
+0.22676765945885902
+33
+1.1205886460425298
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892126
+20
+0.2304013118308924
+30
+1.1524587618942086
+11
+-0.18736621068130693
+21
+0.18569241787797425
+31
+1.1263613947799127
+12
+-0.18979567653601576
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+-0.18979567653601576
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021466
+20
+0.16291833059881372
+30
+1.2854810201011309
+11
+-0.22422437038251308
+21
+0.12848963675231756
+31
+1.221316149587198
+12
+-0.2012071821926738
+22
+0.11520065695492604
+32
+1.2854810201011309
+13
+-0.2012071821926738
+23
+0.11520065695492604
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251308
+20
+0.12848963675231756
+30
+1.221316149587198
+11
+-0.1645921234021466
+21
+0.16291833059881372
+31
+1.2854810201011309
+12
+-0.18338557886171938
+22
+0.18171178605838728
+32
+1.221316149587198
+13
+-0.18338557886171938
+23
+0.18171178605838728
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.23207510463422537
+20
+0.13302226028588032
+30
+1.1524587618942086
+11
+-0.18736621068130693
+21
+0.18569241787797425
+31
+1.1263613947799127
+12
+-0.2299631369342784
+22
+0.13180291516579612
+32
+1.133935070472781
+13
+-0.2299631369342784
+23
+0.13180291516579612
+33
+1.133935070472781
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18736621068130693
+20
+0.18569241787797425
+30
+1.1263613947799127
+11
+-0.23207510463422537
+21
+0.13302226028588032
+31
+1.1524587618942086
+12
+-0.18979567653601576
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+-0.18979567653601576
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.016147808448662315
+20
+0.06651113118241958
+30
+1.4094380312409234
+11
+-0.001673794882292523
+21
+0.06885738977195172
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13016342955565008
+20
+0.03442869592545578
+30
+1.3828600716461388
+11
+-0.1645921234021454
+21
+0.09406094290582062
+31
+1.3405806435479293
+12
+-0.18338557886171858
+22
+0.048689527851465464
+32
+1.3405806435479293
+13
+-0.18338557886171858
+23
+0.048689527851465464
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021454
+20
+0.09406094290582062
+30
+1.3405806435479293
+11
+-0.13016342955565008
+21
+0.03442869592545578
+31
+1.3828600716461388
+12
+-0.11687444975825895
+22
+0.06651113118242014
+32
+1.3828600716461388
+13
+-0.11687444975825895
+23
+0.06651113118242014
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021462
+20
+0.1629183305988131
+30
+1.0194365036872854
+11
+-0.17465408466303567
+21
+0.099870218948371
+31
+0.9794784721134615
+12
+-0.20120718219267303
+22
+0.11520065695492587
+32
+1.0194365036872854
+13
+-0.20120718219267303
+23
+0.11520065695492587
+33
+1.0194365036872854
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.17465408466303567
+20
+0.099870218948371
+30
+0.9794784721134615
+11
+-0.1645921234021462
+21
+0.1629183305988131
+31
+1.0194365036872854
+12
+-0.16443652005322085
+22
+0.12595478545169825
+32
+0.9896960367232768
+13
+-0.16443652005322085
+23
+0.12595478545169825
+33
+0.9896960367232768
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.16443652005322085
+20
+0.12595478545169825
+30
+0.9896960367232768
+11
+-0.1645921234021462
+21
+0.1629183305988131
+31
+1.0194365036872854
+12
+-0.1540765904307652
+22
+0.1524027976274323
+32
+1.0000559663457305
+13
+-0.1540765904307652
+23
+0.1524027976274323
+33
+1.0000559663457305
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18979567653601495
+20
+2.078959449036688e-09
+30
+1.3405806435479293
+11
+-0.22422437038251186
+21
+0.059632249059325015
+31
+1.2854810201011309
+12
+-0.23207510463422537
+22
+2.078959449036688e-09
+32
+1.2854810201011309
+13
+-0.23207510463422537
+23
+2.078959449036688e-09
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.059632249059325015
+30
+1.2854810201011309
+11
+-0.18979567653601495
+21
+2.078959449036688e-09
+31
+1.3405806435479293
+12
+-0.18338557886171858
+22
+0.048689527851465464
+32
+1.3405806435479293
+13
+-0.18338557886171858
+23
+0.048689527851465464
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.12848963675231756
+30
+1.083601374201211
+11
+-0.1645921234021462
+21
+0.1629183305988131
+31
+1.0194365036872854
+12
+-0.20120718219267303
+22
+0.11520065695492587
+32
+1.0194365036872854
+13
+-0.20120718219267303
+23
+0.11520065695492587
+33
+1.0194365036872854
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021462
+20
+0.1629183305988131
+30
+1.0194365036872854
+11
+-0.22422437038251186
+21
+0.12848963675231756
+31
+1.083601374201211
+12
+-0.18338557886171938
+22
+0.18171178605838667
+32
+1.083601374201211
+13
+-0.18338557886171938
+23
+0.18171178605838667
+33
+1.083601374201211
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.036102488728788296
+21
+0.05963224905932479
+31
+1.4094380312409234
+12
+-0.05036332065479815
+22
+0.048689527851465464
+32
+1.4094380312409234
+13
+-0.05036332065479815
+23
+0.048689527851465464
+33
+1.4094380312409234
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06685541923193933
+20
+0.2557545109560382
+30
+1.1428276089410931
+11
+0.13134846332462868
+21
+0.23040131183089219
+31
+1.1524587618942086
+12
+0.13012911820454431
+22
+0.22828934413094437
+32
+1.133935070472775
+13
+0.13012911820454431
+23
+0.22828934413094437
+33
+1.133935070472775
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13134846332462868
+20
+0.23040131183089219
+30
+1.1524587618942086
+11
+0.06685541923193933
+21
+0.2557545109560382
+31
+1.1428276089410931
+12
+0.06718359281070013
+22
+0.25697927142567467
+32
+1.1524587618942086
+13
+0.06718359281070013
+23
+0.25697927142567467
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.25697927142567634
+30
+1.221316149587198
+11
+0.06718359281070013
+21
+0.25697927142567467
+31
+1.1524587618942086
+12
+-0.001673794882292523
+22
+0.2660445184928011
+32
+1.1524587618942086
+13
+-0.001673794882292523
+23
+0.2660445184928011
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06718359281070013
+20
+0.25697927142567467
+30
+1.1524587618942086
+11
+-0.001673794882292523
+21
+0.25697927142567634
+31
+1.221316149587198
+12
+0.06483733422116866
+22
+0.2482229151618479
+32
+1.221316149587198
+13
+0.06483733422116866
+23
+0.2482229151618479
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.047015730890213825
+20
+0.1817117860583855
+30
+1.3405806435479293
+11
+-0.0016737948822921345
+21
+0.23040131183089285
+31
+1.2854810201011309
+12
+-0.0016737948822921345
+22
+0.18812188373268185
+32
+1.3405806435479293
+13
+-0.0016737948822921345
+23
+0.18812188373268185
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+0.23040131183089285
+30
+1.2854810201011309
+11
+0.047015730890213825
+21
+0.1817117860583855
+31
+1.3405806435479293
+12
+0.05795845209807354
+22
+0.22255057757917918
+32
+1.2854810201011309
+13
+0.05795845209807354
+23
+0.22255057757917918
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.03275489896420397
+20
+0.12848963675231745
+30
+1.3828600716461388
+11
+-0.0016737948822921345
+21
+0.18812188373268185
+31
+1.3405806435479293
+12
+-0.001673794882292523
+22
+0.1330222602858806
+32
+1.3828600716461388
+13
+-0.001673794882292523
+23
+0.1330222602858806
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+0.18812188373268185
+30
+1.3405806435479293
+11
+0.03275489896420397
+21
+0.12848963675231745
+31
+1.3828600716461388
+12
+0.047015730890213825
+22
+0.1817117860583855
+32
+1.3405806435479293
+13
+0.047015730890213825
+23
+0.1817117860583855
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.016147808448662315
+20
+0.06651113118241958
+30
+1.4094380312409234
+11
+-0.001673794882292523
+21
+0.1330222602858806
+31
+1.3828600716461388
+12
+-0.001673794882292523
+22
+0.06885738977195172
+32
+1.4094380312409234
+13
+-0.001673794882292523
+23
+0.06885738977195172
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.1330222602858806
+30
+1.3828600716461388
+11
+0.016147808448662315
+21
+0.06651113118241958
+31
+1.4094380312409234
+12
+0.03275489896420397
+22
+0.12848963675231745
+32
+1.3828600716461388
+13
+0.03275489896420397
+23
+0.12848963675231745
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+0.23040131183089285
+30
+1.2854810201011309
+11
+0.06483733422116866
+21
+0.2482229151618479
+31
+1.221316149587198
+12
+-0.001673794882292523
+22
+0.25697927142567634
+32
+1.221316149587198
+13
+-0.001673794882292523
+23
+0.25697927142567634
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116866
+20
+0.2482229151618479
+30
+1.221316149587198
+11
+-0.0016737948822921345
+21
+0.23040131183089285
+31
+1.2854810201011309
+12
+0.05795845209807354
+22
+0.22255057757917918
+32
+1.2854810201011309
+13
+0.05795845209807354
+23
+0.22255057757917918
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.03275489896420397
+20
+0.05963224905932468
+30
+1.4094380312409234
+11
+0.016147808448662315
+21
+0.06651113118241958
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021454
+20
+0.09406094290582062
+30
+1.3405806435479293
+11
+-0.1645921234021466
+21
+0.16291833059881372
+31
+1.2854810201011309
+12
+-0.2012071821926738
+22
+0.11520065695492604
+32
+1.2854810201011309
+13
+-0.2012071821926738
+23
+0.11520065695492604
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021466
+20
+0.16291833059881372
+30
+1.2854810201011309
+11
+-0.1645921234021454
+21
+0.09406094290582062
+31
+1.3405806435479293
+12
+-0.1346960530892126
+22
+0.1330222602858796
+32
+1.3405806435479293
+13
+-0.1346960530892126
+23
+0.1330222602858796
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892106
+20
+0.1858583921844445
+30
+1.0194365036872854
+11
+-0.1540765904307652
+21
+0.1524027976274323
+31
+1.0000559663457305
+12
+-0.1645921234021462
+22
+0.1629183305988131
+32
+1.0194365036872854
+13
+-0.1645921234021462
+23
+0.1629183305988131
+33
+1.0194365036872854
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116866
+20
+0.2482229151618479
+30
+1.221316149587198
+11
+0.13134846332462868
+21
+0.23040131183089219
+31
+1.1524587618942086
+12
+0.06718359281070013
+22
+0.25697927142567467
+32
+1.1524587618942086
+13
+0.06718359281070013
+23
+0.25697927142567467
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13134846332462868
+20
+0.23040131183089219
+30
+1.1524587618942086
+11
+0.06483733422116866
+21
+0.2482229151618479
+31
+1.221316149587198
+12
+0.1268158397910666
+22
+0.22255057757917973
+32
+1.221316149587198
+13
+0.1268158397910666
+23
+0.22255057757917973
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.05795845209807354
+20
+0.22255057757917918
+30
+1.2854810201011309
+11
+0.1268158397910666
+21
+0.22255057757917973
+31
+1.221316149587198
+12
+0.06483733422116866
+22
+0.2482229151618479
+32
+1.221316149587198
+13
+0.06483733422116866
+23
+0.2482229151618479
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.1268158397910666
+20
+0.22255057757917973
+30
+1.221316149587198
+11
+0.05795845209807354
+21
+0.22255057757917918
+31
+1.2854810201011309
+12
+0.11352685999367468
+22
+0.19953338938934095
+32
+1.2854810201011309
+13
+0.11352685999367468
+23
+0.19953338938934095
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838667
+30
+1.083601374201211
+11
+-0.1346960530892106
+21
+0.1858583921844445
+31
+1.0194365036872854
+12
+-0.1645921234021462
+22
+0.1629183305988131
+32
+1.0194365036872854
+13
+-0.1645921234021462
+23
+0.1629183305988131
+33
+1.0194365036872854
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892106
+20
+0.1858583921844445
+30
+1.0194365036872854
+11
+-0.18338557886171938
+21
+0.18171178605838667
+31
+1.083601374201211
+12
+-0.11993215348338515
+22
+0.20482948759574693
+32
+1.0342004032931107
+13
+-0.11993215348338515
+23
+0.20482948759574693
+33
+1.0342004032931107
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.11993215348338515
+20
+0.20482948759574693
+30
+1.0342004032931107
+11
+-0.18338557886171938
+21
+0.18171178605838667
+31
+1.083601374201211
+12
+-0.13016342955565008
+22
+0.2225505775791794
+32
+1.083601374201211
+13
+-0.13016342955565008
+23
+0.2225505775791794
+33
+1.083601374201211
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.07053118257528401
+20
+2.0789595045478393e-09
+30
+1.4094380312409234
+11
+-0.13016342955565008
+21
+0.03442869592545578
+31
+1.3828600716461388
+12
+-0.1346960530892126
+22
+2.078959449036688e-09
+32
+1.3828600716461388
+13
+-0.1346960530892126
+23
+2.078959449036688e-09
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13016342955565008
+20
+0.03442869592545578
+30
+1.3828600716461388
+11
+-0.07053118257528401
+21
+2.0789595045478393e-09
+31
+1.4094380312409234
+12
+-0.06818492398575215
+22
+0.017821605409913677
+32
+1.4094380312409234
+13
+-0.06818492398575215
+23
+0.017821605409913677
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09238714594456926
+20
+0.16291833059881272
+30
+1.3405806435479293
+11
+0.05795845209807354
+21
+0.22255057757917918
+31
+1.2854810201011309
+12
+0.047015730890213825
+22
+0.1817117860583855
+32
+1.3405806435479293
+13
+0.047015730890213825
+23
+0.1817117860583855
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.05795845209807354
+20
+0.22255057757917918
+30
+1.2854810201011309
+11
+0.09238714594456926
+21
+0.16291833059881272
+31
+1.3405806435479293
+12
+0.11352685999367468
+22
+0.19953338938934095
+32
+1.2854810201011309
+13
+0.11352685999367468
+23
+0.19953338938934095
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116827
+20
+0.11520065695492626
+30
+1.3828600716461388
+11
+0.047015730890213825
+21
+0.1817117860583855
+31
+1.3405806435479293
+12
+0.03275489896420397
+22
+0.12848963675231745
+32
+1.3828600716461388
+13
+0.03275489896420397
+23
+0.12848963675231745
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.047015730890213825
+20
+0.1817117860583855
+30
+1.3405806435479293
+11
+0.06483733422116827
+21
+0.11520065695492626
+31
+1.3828600716461388
+12
+0.09238714594456926
+22
+0.16291833059881272
+32
+1.3405806435479293
+13
+0.09238714594456926
+23
+0.16291833059881272
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.06130604186265742
+21
+0.034428695925455444
+31
+1.4094380312409234
+12
+-0.06818492398575215
+22
+0.017821605409913677
+32
+1.4094380312409234
+13
+-0.06818492398575215
+23
+0.017821605409913677
+33
+1.4094380312409234
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251308
+20
+0.12848963675231756
+30
+1.221316149587198
+11
+-0.2586530642290084
+21
+0.06885738977195188
+31
+1.1524587618942086
+12
+-0.249896707965181
+22
+0.06651113118242025
+32
+1.221316149587198
+13
+-0.249896707965181
+23
+0.06651113118242025
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2586530642290084
+20
+0.06885738977195188
+30
+1.1524587618942086
+11
+-0.22422437038251308
+21
+0.12848963675231756
+31
+1.221316149587198
+12
+-0.23207510463422537
+22
+0.13302226028588032
+32
+1.1524587618942086
+13
+-0.23207510463422537
+23
+0.13302226028588032
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.05036332065479854
+20
+0.1817117860583855
+30
+1.3405806435479293
+11
+-0.0016737948822921345
+21
+0.23040131183089285
+31
+1.2854810201011309
+12
+-0.06130604186265742
+22
+0.22255057757917918
+32
+1.2854810201011309
+13
+-0.06130604186265742
+23
+0.22255057757917918
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+0.23040131183089285
+30
+1.2854810201011309
+11
+-0.05036332065479854
+21
+0.1817117860583855
+31
+1.3405806435479293
+12
+-0.0016737948822921345
+22
+0.18812188373268185
+32
+1.3405806435479293
+13
+-0.0016737948822921345
+23
+0.18812188373268185
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.05036332065479815
+20
+0.048689527851465464
+30
+1.4094380312409234
+11
+-0.06818492398575215
+21
+0.11520065695492637
+31
+1.3828600716461388
+12
+-0.09573473570915433
+22
+0.09406094290582112
+32
+1.3828600716461388
+13
+-0.09573473570915433
+23
+0.09406094290582112
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06818492398575215
+20
+0.11520065695492637
+30
+1.3828600716461388
+11
+-0.05036332065479815
+21
+0.048689527851465464
+31
+1.4094380312409234
+12
+-0.036102488728788296
+22
+0.05963224905932479
+32
+1.4094380312409234
+13
+-0.036102488728788296
+23
+0.05963224905932479
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.047015730890213825
+20
+0.04868952785146535
+30
+1.4094380312409234
+11
+0.03275489896420397
+21
+0.05963224905932468
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021466
+20
+0.16291833059881372
+30
+1.2854810201011309
+11
+-0.13016342955565008
+21
+0.22255057757917995
+31
+1.221316149587198
+12
+-0.18338557886171938
+22
+0.18171178605838728
+32
+1.221316149587198
+13
+-0.18338557886171938
+23
+0.18171178605838728
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13016342955565008
+20
+0.22255057757917995
+30
+1.221316149587198
+11
+-0.1645921234021466
+21
+0.16291833059881372
+31
+1.2854810201011309
+12
+-0.11687444975825895
+22
+0.19953338938934106
+32
+1.2854810201011309
+13
+-0.11687444975825895
+23
+0.19953338938934106
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06718359281069974
+20
+2.078959393525537e-09
+30
+1.4094380312409234
+11
+0.1268158397910666
+21
+0.03442869592545589
+31
+1.3828600716461388
+12
+0.06483733422116789
+22
+0.01782160540991351
+32
+1.4094380312409234
+13
+0.06483733422116789
+23
+0.01782160540991351
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.1268158397910666
+20
+0.03442869592545589
+30
+1.3828600716461388
+11
+0.06718359281069974
+21
+2.078959393525537e-09
+31
+1.4094380312409234
+12
+0.1313484633246299
+22
+2.078959449036688e-09
+32
+1.3828600716461388
+13
+0.1313484633246299
+23
+2.078959449036688e-09
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18644808677143027
+20
+2.078959393525537e-09
+30
+1.3405806435479293
+11
+0.2208767806179276
+21
+0.059632249059325015
+31
+1.2854810201011309
+12
+0.18003798909713392
+22
+0.0486895278514653
+32
+1.3405806435479293
+13
+0.18003798909713392
+23
+0.0486895278514653
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2208767806179276
+20
+0.059632249059325015
+30
+1.2854810201011309
+11
+0.18644808677143027
+21
+2.078959393525537e-09
+31
+1.3405806435479293
+12
+0.22872751486964182
+22
+2.078959393525537e-09
+32
+1.2854810201011309
+13
+0.22872751486964182
+23
+2.078959393525537e-09
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.16124453363756153
+20
+0.09406094290582073
+30
+1.3405806435479293
+11
+0.16124453363756192
+21
+0.162918330598814
+31
+1.2854810201011309
+12
+0.13134846332462868
+22
+0.13302226028588
+32
+1.3405806435479293
+13
+0.13134846332462868
+23
+0.13302226028588
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.16124453363756192
+20
+0.162918330598814
+30
+1.2854810201011309
+11
+0.16124453363756153
+21
+0.09406094290582073
+31
+1.3405806435479293
+12
+0.19785959242808948
+22
+0.11520065695492626
+32
+1.2854810201011309
+13
+0.19785959242808948
+23
+0.11520065695492626
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2553054744644233
+20
+0.06885738977195177
+30
+1.1524587618942086
+11
+0.2553054744644241
+21
+2.078959393525537e-09
+31
+1.221316149587198
+12
+0.2643707215315495
+22
+2.078959393525537e-09
+32
+1.1524587618942086
+13
+0.2643707215315495
+23
+2.078959393525537e-09
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2553054744644241
+20
+2.078959393525537e-09
+30
+1.221316149587198
+11
+0.2553054744644233
+21
+0.06885738977195177
+31
+1.1524587618942086
+12
+0.24654911820059633
+22
+0.06651113118241986
+32
+1.221316149587198
+13
+0.24654911820059633
+23
+0.06651113118241986
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.11352685999367468
+20
+0.06651113118242036
+30
+1.3828600716461388
+11
+0.13134846332462868
+21
+0.13302226028588
+31
+1.3405806435479293
+12
+0.09238714594456965
+22
+0.09406094290582162
+32
+1.3828600716461388
+13
+0.09238714594456965
+23
+0.09406094290582162
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13134846332462868
+20
+0.13302226028588
+30
+1.3405806435479293
+11
+0.11352685999367468
+21
+0.06651113118242036
+31
+1.3828600716461388
+12
+0.16124453363756153
+22
+0.09406094290582073
+32
+1.3405806435479293
+13
+0.16124453363756153
+23
+0.09406094290582073
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116789
+20
+0.01782160540991351
+30
+1.4094380312409234
+11
+0.05795845209807354
+21
+0.034428695925455666
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.047015730890213825
+20
+0.04868952785146535
+30
+1.4094380312409234
+11
+0.06483733422116827
+21
+0.11520065695492626
+31
+1.3828600716461388
+12
+0.03275489896420397
+22
+0.05963224905932468
+32
+1.4094380312409234
+13
+0.03275489896420397
+23
+0.05963224905932468
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116827
+20
+0.11520065695492626
+30
+1.3828600716461388
+11
+0.047015730890213825
+21
+0.04868952785146535
+31
+1.4094380312409234
+12
+0.09238714594456965
+22
+0.09406094290582162
+32
+1.3828600716461388
+13
+0.09238714594456965
+23
+0.09406094290582162
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.1313484633246299
+20
+2.078959449036688e-09
+30
+1.3828600716461388
+11
+0.18003798909713392
+21
+0.0486895278514653
+31
+1.3405806435479293
+12
+0.1268158397910666
+22
+0.03442869592545589
+32
+1.3828600716461388
+13
+0.1268158397910666
+23
+0.03442869592545589
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18003798909713392
+20
+0.0486895278514653
+30
+1.3405806435479293
+11
+0.1313484633246299
+21
+2.078959449036688e-09
+31
+1.3828600716461388
+12
+0.18644808677143027
+22
+2.078959393525537e-09
+32
+1.3405806435479293
+13
+0.18644808677143027
+23
+2.078959393525537e-09
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.05795845209807354
+20
+0.034428695925455666
+30
+1.4094380312409234
+11
+0.047015730890213825
+21
+0.04868952785146535
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.11352685999367468
+20
+0.19953338938934095
+30
+1.2854810201011309
+11
+0.18003798909713586
+21
+0.18171178605838728
+31
+1.221316149587198
+12
+0.1268158397910666
+22
+0.22255057757917973
+32
+1.221316149587198
+13
+0.1268158397910666
+23
+0.22255057757917973
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18003798909713586
+20
+0.18171178605838728
+30
+1.221316149587198
+11
+0.11352685999367468
+21
+0.19953338938934095
+31
+1.2854810201011309
+12
+0.16124453363756192
+22
+0.162918330598814
+32
+1.2854810201011309
+13
+0.16124453363756192
+23
+0.162918330598814
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.24654911820059633
+20
+0.06651113118241986
+30
+1.221316149587198
+11
+0.19785959242808948
+21
+0.11520065695492626
+31
+1.2854810201011309
+12
+0.2208767806179276
+22
+0.059632249059325015
+32
+1.2854810201011309
+13
+0.2208767806179276
+23
+0.059632249059325015
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.19785959242808948
+20
+0.11520065695492626
+30
+1.2854810201011309
+11
+0.24654911820059633
+21
+0.06651113118241986
+31
+1.221316149587198
+12
+0.22087678061792837
+22
+0.12848963675231756
+32
+1.221316149587198
+13
+0.22087678061792837
+23
+0.12848963675231756
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.03275489896420397
+20
+0.05963224905932468
+30
+1.4094380312409234
+11
+0.03275489896420397
+21
+0.12848963675231745
+31
+1.3828600716461388
+12
+0.016147808448662315
+22
+0.06651113118241958
+32
+1.4094380312409234
+13
+0.016147808448662315
+23
+0.06651113118241958
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.03275489896420397
+20
+0.12848963675231745
+30
+1.3828600716461388
+11
+0.03275489896420397
+21
+0.05963224905932468
+31
+1.4094380312409234
+12
+0.06483733422116827
+22
+0.11520065695492626
+32
+1.3828600716461388
+13
+0.06483733422116827
+23
+0.11520065695492626
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251108
+20
+0.05963224905932479
+30
+1.0194365036872854
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.23207510463422495
+22
+2.078959449036688e-09
+32
+1.0194365036872854
+13
+-0.23207510463422495
+23
+2.078959449036688e-09
+33
+1.0194365036872854
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18979567653601576
+20
+2.0789595045478393e-09
+30
+0.9643368802404846
+11
+-0.22422437038251108
+21
+0.05963224905932479
+31
+1.0194365036872854
+12
+-0.1861142110017942
+22
+0.049420662629840184
+32
+0.9680183457747035
+13
+-0.1861142110017942
+23
+0.049420662629840184
+33
+0.9680183457747035
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.258653064229008
+20
+2.0789595045478393e-09
+30
+1.083601374201211
+11
+-0.22422437038251108
+21
+0.05963224905932479
+31
+1.0194365036872854
+12
+-0.23207510463422495
+22
+2.078959449036688e-09
+32
+1.0194365036872854
+13
+-0.23207510463422495
+23
+2.078959449036688e-09
+33
+1.0194365036872854
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251108
+20
+0.05963224905932479
+30
+1.0194365036872854
+11
+-0.258653064229008
+21
+2.0789595045478393e-09
+31
+1.083601374201211
+12
+-0.2498967079651798
+22
+0.06651113118242008
+32
+1.083601374201211
+13
+-0.2498967079651798
+23
+0.06651113118242008
+33
+1.083601374201211
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.059632249059325015
+30
+1.2854810201011309
+11
+-0.2586530642290092
+21
+2.078959449036688e-09
+31
+1.221316149587198
+12
+-0.23207510463422537
+22
+2.078959449036688e-09
+32
+1.2854810201011309
+13
+-0.23207510463422537
+23
+2.078959449036688e-09
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2586530642290092
+20
+2.078959449036688e-09
+30
+1.221316149587198
+11
+-0.22422437038251186
+21
+0.059632249059325015
+31
+1.2854810201011309
+12
+-0.249896707965181
+22
+0.06651113118242025
+32
+1.221316149587198
+13
+-0.249896707965181
+23
+0.06651113118242025
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13259816291407706
+20
+0.22676765945885902
+30
+1.1205886460425298
+11
+-0.0705311825752852
+21
+0.2569792714256749
+31
+1.1524587618942086
+12
+-0.06932216463771257
+22
+0.2524671550553943
+32
+1.1169768174799652
+13
+-0.06932216463771257
+23
+0.2524671550553943
+33
+1.1169768174799652
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0705311825752852
+20
+0.2569792714256749
+30
+1.1524587618942086
+11
+-0.13259816291407706
+21
+0.22676765945885902
+31
+1.1205886460425298
+12
+-0.1346960530892126
+22
+0.2304013118308924
+32
+1.1524587618942086
+13
+-0.1346960530892126
+23
+0.2304013118308924
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2012071821926738
+20
+0.11520065695492604
+30
+1.2854810201011309
+11
+-0.249896707965181
+21
+0.06651113118242025
+31
+1.221316149587198
+12
+-0.22422437038251186
+22
+0.059632249059325015
+32
+1.2854810201011309
+13
+-0.22422437038251186
+23
+0.059632249059325015
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.249896707965181
+20
+0.06651113118242025
+30
+1.221316149587198
+11
+-0.2012071821926738
+21
+0.11520065695492604
+31
+1.2854810201011309
+12
+-0.22422437038251308
+22
+0.12848963675231756
+32
+1.221316149587198
+13
+-0.22422437038251308
+23
+0.12848963675231756
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171858
+20
+0.048689527851465464
+30
+1.3405806435479293
+11
+-0.2012071821926738
+21
+0.11520065695492604
+31
+1.2854810201011309
+12
+-0.22422437038251186
+22
+0.059632249059325015
+32
+1.2854810201011309
+13
+-0.22422437038251186
+23
+0.059632249059325015
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2012071821926738
+20
+0.11520065695492604
+30
+1.2854810201011309
+11
+-0.18338557886171858
+21
+0.048689527851465464
+31
+1.3405806435479293
+12
+-0.1645921234021454
+22
+0.09406094290582062
+32
+1.3405806435479293
+13
+-0.1645921234021454
+23
+0.09406094290582062
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892126
+20
+0.1330222602858796
+30
+1.3405806435479293
+11
+-0.11687444975825895
+21
+0.19953338938934106
+31
+1.2854810201011309
+12
+-0.1645921234021466
+22
+0.16291833059881372
+32
+1.2854810201011309
+13
+-0.1645921234021466
+23
+0.16291833059881372
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.11687444975825895
+20
+0.19953338938934106
+30
+1.2854810201011309
+11
+-0.1346960530892126
+21
+0.1330222602858796
+31
+1.3405806435479293
+12
+-0.09573473570915275
+22
+0.162918330598813
+32
+1.3405806435479293
+13
+-0.09573473570915275
+23
+0.162918330598813
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838728
+30
+1.221316149587198
+11
+-0.1346960530892126
+21
+0.2304013118308924
+31
+1.1524587618942086
+12
+-0.18979567653601576
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+-0.18979567653601576
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892126
+20
+0.2304013118308924
+30
+1.1524587618942086
+11
+-0.18338557886171938
+21
+0.18171178605838728
+31
+1.221316149587198
+12
+-0.13016342955565008
+22
+0.22255057757917995
+32
+1.221316149587198
+13
+-0.13016342955565008
+23
+0.22255057757917995
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09573473570915433
+20
+0.09406094290582112
+30
+1.3828600716461388
+11
+-0.09573473570915275
+21
+0.162918330598813
+31
+1.3405806435479293
+12
+-0.1346960530892126
+22
+0.1330222602858796
+32
+1.3405806435479293
+13
+-0.1346960530892126
+23
+0.1330222602858796
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09573473570915275
+20
+0.162918330598813
+30
+1.3405806435479293
+11
+-0.09573473570915433
+21
+0.09406094290582112
+31
+1.3828600716461388
+12
+-0.06818492398575215
+22
+0.11520065695492637
+32
+1.3828600716461388
+13
+-0.06818492398575215
+23
+0.11520065695492637
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.20120718219267303
+20
+0.11520065695492587
+30
+1.0194365036872854
+11
+-0.1861142110017942
+21
+0.049420662629840184
+31
+0.9680183457747035
+12
+-0.22422437038251108
+22
+0.05963224905932479
+32
+1.0194365036872854
+13
+-0.22422437038251108
+23
+0.05963224905932479
+33
+1.0194365036872854
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1861142110017942
+20
+0.049420662629840184
+30
+0.9680183457747035
+11
+-0.20120718219267303
+21
+0.11520065695492587
+31
+1.0194365036872854
+12
+-0.17465408466303567
+22
+0.099870218948371
+32
+0.9794784721134615
+13
+-0.17465408466303567
+23
+0.099870218948371
+33
+0.9794784721134615
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06130604186265742
+20
+0.034428695925455444
+30
+1.4094380312409234
+11
+-0.09573473570915433
+21
+0.09406094290582112
+31
+1.3828600716461388
+12
+-0.11687444975825895
+22
+0.06651113118242014
+32
+1.3828600716461388
+13
+-0.11687444975825895
+23
+0.06651113118242014
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09573473570915433
+20
+0.09406094290582112
+30
+1.3828600716461388
+11
+-0.06130604186265742
+21
+0.034428695925455444
+31
+1.4094380312409234
+12
+-0.05036332065479815
+22
+0.048689527851465464
+32
+1.4094380312409234
+13
+-0.05036332065479815
+23
+0.048689527851465464
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.11687444975825895
+20
+0.06651113118242014
+30
+1.3828600716461388
+11
+-0.1346960530892126
+21
+0.1330222602858796
+31
+1.3405806435479293
+12
+-0.1645921234021454
+22
+0.09406094290582062
+32
+1.3405806435479293
+13
+-0.1645921234021454
+23
+0.09406094290582062
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892126
+20
+0.1330222602858796
+30
+1.3405806435479293
+11
+-0.11687444975825895
+21
+0.06651113118242014
+31
+1.3828600716461388
+12
+-0.09573473570915433
+22
+0.09406094290582112
+32
+1.3828600716461388
+13
+-0.09573473570915433
+23
+0.09406094290582112
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2498967079651798
+20
+0.06651113118242008
+30
+1.083601374201211
+11
+-0.20120718219267303
+21
+0.11520065695492587
+31
+1.0194365036872854
+12
+-0.22422437038251108
+22
+0.05963224905932479
+32
+1.0194365036872854
+13
+-0.22422437038251108
+23
+0.05963224905932479
+33
+1.0194365036872854
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.20120718219267303
+20
+0.11520065695492587
+30
+1.0194365036872854
+11
+-0.2498967079651798
+21
+0.06651113118242008
+31
+1.083601374201211
+12
+-0.22422437038251186
+22
+0.12848963675231756
+32
+1.083601374201211
+13
+-0.22422437038251186
+23
+0.12848963675231756
+33
+1.083601374201211
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892126
+20
+2.078959449036688e-09
+30
+1.3828600716461388
+11
+-0.18338557886171858
+21
+0.048689527851465464
+31
+1.3405806435479293
+12
+-0.18979567653601495
+22
+2.078959449036688e-09
+32
+1.3405806435479293
+13
+-0.18979567653601495
+23
+2.078959449036688e-09
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171858
+20
+0.048689527851465464
+30
+1.3405806435479293
+11
+-0.1346960530892126
+21
+2.078959449036688e-09
+31
+1.3828600716461388
+12
+-0.13016342955565008
+22
+0.03442869592545578
+32
+1.3828600716461388
+13
+-0.13016342955565008
+23
+0.03442869592545578
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838728
+30
+1.221316149587198
+11
+-0.23207510463422537
+21
+0.13302226028588032
+31
+1.1524587618942086
+12
+-0.22422437038251308
+22
+0.12848963675231756
+32
+1.221316149587198
+13
+-0.22422437038251308
+23
+0.12848963675231756
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.23207510463422537
+20
+0.13302226028588032
+30
+1.1524587618942086
+11
+-0.18338557886171938
+21
+0.18171178605838728
+31
+1.221316149587198
+12
+-0.18979567653601576
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+-0.18979567653601576
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.036102488728788684
+20
+0.12848963675231756
+30
+1.3828600716461388
+11
+-0.0016737948822921345
+21
+0.18812188373268185
+31
+1.3405806435479293
+12
+-0.05036332065479854
+22
+0.1817117860583855
+32
+1.3405806435479293
+13
+-0.05036332065479854
+23
+0.1817117860583855
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+0.18812188373268185
+30
+1.3405806435479293
+11
+-0.036102488728788684
+21
+0.12848963675231756
+31
+1.3828600716461388
+12
+-0.001673794882292523
+22
+0.1330222602858806
+32
+1.3828600716461388
+13
+-0.001673794882292523
+23
+0.1330222602858806
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06130604186265742
+20
+0.22255057757917918
+30
+1.2854810201011309
+11
+-0.001673794882292523
+21
+0.25697927142567634
+31
+1.221316149587198
+12
+-0.06818492398575296
+22
+0.24822291516184813
+32
+1.221316149587198
+13
+-0.06818492398575296
+23
+0.24822291516184813
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.25697927142567634
+30
+1.221316149587198
+11
+-0.06130604186265742
+21
+0.22255057757917918
+31
+1.2854810201011309
+12
+-0.0016737948822921345
+22
+0.23040131183089285
+32
+1.2854810201011309
+13
+-0.0016737948822921345
+23
+0.23040131183089285
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06818492398575296
+20
+0.24822291516184813
+30
+1.221316149587198
+11
+-0.001673794882292523
+21
+0.2660445184928011
+31
+1.1524587618942086
+12
+-0.0705311825752852
+22
+0.2569792714256749
+32
+1.1524587618942086
+13
+-0.0705311825752852
+23
+0.2569792714256749
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.2660445184928011
+30
+1.1524587618942086
+11
+-0.06818492398575296
+21
+0.24822291516184813
+31
+1.221316149587198
+12
+-0.001673794882292523
+22
+0.25697927142567634
+32
+1.221316149587198
+13
+-0.001673794882292523
+23
+0.25697927142567634
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.036102488728788296
+20
+0.05963224905932479
+30
+1.4094380312409234
+11
+-0.036102488728788684
+21
+0.12848963675231756
+31
+1.3828600716461388
+12
+-0.06818492398575215
+22
+0.11520065695492637
+32
+1.3828600716461388
+13
+-0.06818492398575215
+23
+0.11520065695492637
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.036102488728788684
+20
+0.12848963675231756
+30
+1.3828600716461388
+11
+-0.036102488728788296
+21
+0.05963224905932479
+31
+1.4094380312409234
+12
+-0.019495398213246973
+22
+0.06651113118241969
+32
+1.4094380312409234
+13
+-0.019495398213246973
+23
+0.06651113118241969
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06818492398575215
+20
+0.11520065695492637
+30
+1.3828600716461388
+11
+-0.05036332065479854
+21
+0.1817117860583855
+31
+1.3405806435479293
+12
+-0.09573473570915275
+22
+0.162918330598813
+32
+1.3405806435479293
+13
+-0.09573473570915275
+23
+0.162918330598813
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.05036332065479854
+20
+0.1817117860583855
+30
+1.3405806435479293
+11
+-0.06818492398575215
+21
+0.11520065695492637
+31
+1.3828600716461388
+12
+-0.036102488728788684
+22
+0.12848963675231756
+32
+1.3828600716461388
+13
+-0.036102488728788684
+23
+0.12848963675231756
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09573473570915275
+20
+0.162918330598813
+30
+1.3405806435479293
+11
+-0.06130604186265742
+21
+0.22255057757917918
+31
+1.2854810201011309
+12
+-0.11687444975825895
+22
+0.19953338938934106
+32
+1.2854810201011309
+13
+-0.11687444975825895
+23
+0.19953338938934106
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06130604186265742
+20
+0.22255057757917918
+30
+1.2854810201011309
+11
+-0.09573473570915275
+21
+0.162918330598813
+31
+1.3405806435479293
+12
+-0.05036332065479854
+22
+0.1817117860583855
+32
+1.3405806435479293
+13
+-0.05036332065479854
+23
+0.1817117860583855
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.001673794882292523
+21
+0.06885738977195172
+31
+1.4094380312409234
+12
+-0.019495398213246973
+22
+0.06651113118241969
+32
+1.4094380312409234
+13
+-0.019495398213246973
+23
+0.06651113118241969
+33
+1.4094380312409234
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.019495398213246973
+21
+0.06651113118241969
+31
+1.4094380312409234
+12
+-0.036102488728788296
+22
+0.05963224905932479
+32
+1.4094380312409234
+13
+-0.036102488728788296
+23
+0.05963224905932479
+33
+1.4094380312409234
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.07053118257528798
+20
+0.24725106303322575
+30
+1.083601374201211
+11
+-0.11993215348338515
+21
+0.20482948759574693
+31
+1.0342004032931107
+12
+-0.13016342955565008
+22
+0.2225505775791794
+32
+1.083601374201211
+13
+-0.13016342955565008
+23
+0.2225505775791794
+33
+1.083601374201211
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.06818492398575215
+21
+0.017821605409913677
+31
+1.4094380312409234
+12
+-0.07053118257528401
+22
+2.0789595045478393e-09
+32
+1.4094380312409234
+13
+-0.07053118257528401
+23
+2.0789595045478393e-09
+33
+1.4094380312409234
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06932216463771257
+20
+0.2524671550553943
+30
+1.1169768174799652
+11
+-0.001673794882292523
+21
+0.2660445184928011
+31
+1.1524587618942086
+12
+-0.0377296621751953
+22
+0.2565508285292213
+32
+1.1164028946013032
+13
+-0.0377296621751953
+23
+0.2565508285292213
+33
+1.1164028946013032
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.2660445184928011
+30
+1.1524587618942086
+11
+-0.06932216463771257
+21
+0.2524671550553943
+31
+1.1169768174799652
+12
+-0.0705311825752852
+22
+0.2569792714256749
+32
+1.1524587618942086
+13
+-0.0705311825752852
+23
+0.2569792714256749
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.11687444975825895
+20
+0.19953338938934106
+30
+1.2854810201011309
+11
+-0.06818492398575296
+21
+0.24822291516184813
+31
+1.221316149587198
+12
+-0.13016342955565008
+22
+0.22255057757917995
+32
+1.221316149587198
+13
+-0.13016342955565008
+23
+0.22255057757917995
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06818492398575296
+20
+0.24822291516184813
+30
+1.221316149587198
+11
+-0.11687444975825895
+21
+0.19953338938934106
+31
+1.2854810201011309
+12
+-0.06130604186265742
+22
+0.22255057757917918
+32
+1.2854810201011309
+13
+-0.06130604186265742
+23
+0.22255057757917918
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13016342955565008
+20
+0.22255057757917995
+30
+1.221316149587198
+11
+-0.0705311825752852
+21
+0.2569792714256749
+31
+1.1524587618942086
+12
+-0.1346960530892126
+22
+0.2304013118308924
+32
+1.1524587618942086
+13
+-0.1346960530892126
+23
+0.2304013118308924
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0705311825752852
+20
+0.2569792714256749
+30
+1.1524587618942086
+11
+-0.13016342955565008
+21
+0.22255057757917995
+31
+1.221316149587198
+12
+-0.06818492398575296
+22
+0.24822291516184813
+32
+1.221316149587198
+13
+-0.06818492398575296
+23
+0.24822291516184813
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.1268158397910666
+20
+0.22255057757917973
+30
+1.221316149587198
+11
+0.18644808677143104
+21
+0.18812188373268263
+31
+1.1524587618942086
+12
+0.13134846332462868
+22
+0.23040131183089219
+32
+1.1524587618942086
+13
+0.13134846332462868
+23
+0.23040131183089219
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18644808677143104
+20
+0.18812188373268263
+30
+1.1524587618942086
+11
+0.1268158397910666
+21
+0.22255057757917973
+31
+1.221316149587198
+12
+0.18003798909713586
+22
+0.18171178605838728
+32
+1.221316149587198
+13
+0.18003798909713586
+23
+0.18171178605838728
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2553054744644233
+20
+0.06885738977195177
+30
+1.1524587618942086
+11
+0.2643707215315495
+21
+2.078959393525537e-09
+31
+1.1524587618942086
+12
+0.2540807139947864
+22
+0.06852921619319102
+32
+1.1428276089410956
+13
+0.2540807139947864
+23
+0.06852921619319102
+33
+1.1428276089410956
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06718359281069974
+20
+2.078959393525537e-09
+30
+1.4094380312409234
+11
+0.06483733422116789
+21
+0.01782160540991351
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18401862091672266
+20
+0.18569241787797314
+30
+1.1263613947799103
+11
+0.2287275148696407
+21
+0.1330222602858802
+31
+1.1524587618942086
+12
+0.22661554716969412
+22
+0.13180291516579662
+32
+1.133935070472775
+13
+0.22661554716969412
+23
+0.13180291516579662
+33
+1.133935070472775
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2287275148696407
+20
+0.1330222602858802
+30
+1.1524587618942086
+11
+0.18401862091672266
+21
+0.18569241787797314
+31
+1.1263613947799103
+12
+0.18644808677143104
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+0.18644808677143104
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06718359281070013
+20
+0.25697927142567467
+30
+1.1524587618942086
+11
+0.06685541923193933
+21
+0.2557545109560382
+31
+1.1428276089410931
+12
+-0.001673794882292523
+22
+0.2660445184928011
+32
+1.1524587618942086
+13
+-0.001673794882292523
+23
+0.2660445184928011
+33
+1.1524587618942086
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.019495398213246973
+20
+0.06651113118241969
+30
+1.4094380312409234
+11
+-0.001673794882292523
+21
+0.1330222602858806
+31
+1.3828600716461388
+12
+-0.036102488728788684
+22
+0.12848963675231756
+32
+1.3828600716461388
+13
+-0.036102488728788684
+23
+0.12848963675231756
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.1330222602858806
+30
+1.3828600716461388
+11
+-0.019495398213246973
+21
+0.06651113118241969
+31
+1.4094380312409234
+12
+-0.001673794882292523
+22
+0.06885738977195172
+32
+1.4094380312409234
+13
+-0.001673794882292523
+23
+0.06885738977195172
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13012911820454431
+20
+0.22828934413094437
+30
+1.133935070472775
+11
+0.18644808677143104
+21
+0.18812188373268263
+31
+1.1524587618942086
+12
+0.18401862091672266
+22
+0.18569241787797314
+32
+1.1263613947799103
+13
+0.18401862091672266
+23
+0.18569241787797314
+33
+1.1263613947799103
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18644808677143104
+20
+0.18812188373268263
+30
+1.1524587618942086
+11
+0.13012911820454431
+21
+0.22828934413094437
+31
+1.133935070472775
+12
+0.13134846332462868
+22
+0.23040131183089219
+32
+1.1524587618942086
+13
+0.13134846332462868
+23
+0.23040131183089219
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2287275148696407
+20
+0.1330222602858802
+30
+1.1524587618942086
+11
+0.18003798909713586
+21
+0.18171178605838728
+31
+1.221316149587198
+12
+0.22087678061792837
+22
+0.12848963675231756
+32
+1.221316149587198
+13
+0.22087678061792837
+23
+0.12848963675231756
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18003798909713586
+20
+0.18171178605838728
+30
+1.221316149587198
+11
+0.2287275148696407
+21
+0.1330222602858802
+31
+1.1524587618942086
+12
+0.18644808677143104
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+0.18644808677143104
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09238714594456965
+20
+0.09406094290582162
+30
+1.3828600716461388
+11
+0.09238714594456926
+21
+0.16291833059881272
+31
+1.3405806435479293
+12
+0.06483733422116827
+22
+0.11520065695492626
+32
+1.3828600716461388
+13
+0.06483733422116827
+23
+0.11520065695492626
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09238714594456926
+20
+0.16291833059881272
+30
+1.3405806435479293
+11
+0.09238714594456965
+21
+0.09406094290582162
+31
+1.3828600716461388
+12
+0.13134846332462868
+22
+0.13302226028588
+32
+1.3405806435479293
+13
+0.13134846332462868
+23
+0.13302226028588
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22087678061792837
+20
+0.12848963675231756
+30
+1.221316149587198
+11
+0.16124453363756192
+21
+0.162918330598814
+31
+1.2854810201011309
+12
+0.19785959242808948
+22
+0.11520065695492626
+32
+1.2854810201011309
+13
+0.19785959242808948
+23
+0.11520065695492626
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.16124453363756192
+20
+0.162918330598814
+30
+1.2854810201011309
+11
+0.22087678061792837
+21
+0.12848963675231756
+31
+1.221316149587198
+12
+0.18003798909713586
+22
+0.18171178605838728
+32
+1.221316149587198
+13
+0.18003798909713586
+23
+0.18171178605838728
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2553054744644233
+20
+0.06885738977195177
+30
+1.1524587618942086
+11
+0.22087678061792837
+21
+0.12848963675231756
+31
+1.221316149587198
+12
+0.24654911820059633
+22
+0.06651113118241986
+32
+1.221316149587198
+13
+0.24654911820059633
+23
+0.06651113118241986
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22087678061792837
+20
+0.12848963675231756
+30
+1.221316149587198
+11
+0.2553054744644233
+21
+0.06885738977195177
+31
+1.1524587618942086
+12
+0.2287275148696407
+22
+0.1330222602858802
+32
+1.1524587618942086
+13
+0.2287275148696407
+23
+0.1330222602858802
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22661554716969412
+20
+0.13180291516579662
+30
+1.133935070472775
+11
+0.2553054744644233
+21
+0.06885738977195177
+31
+1.1524587618942086
+12
+0.2540807139947864
+22
+0.06852921619319102
+32
+1.1428276089410956
+13
+0.2540807139947864
+23
+0.06852921619319102
+33
+1.1428276089410956
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2553054744644233
+20
+0.06885738977195177
+30
+1.1524587618942086
+11
+0.22661554716969412
+21
+0.13180291516579662
+31
+1.133935070472775
+12
+0.2287275148696407
+22
+0.1330222602858802
+32
+1.1524587618942086
+13
+0.2287275148696407
+23
+0.1330222602858802
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18003798909713392
+20
+0.0486895278514653
+30
+1.3405806435479293
+11
+0.19785959242808948
+21
+0.11520065695492626
+31
+1.2854810201011309
+12
+0.16124453363756153
+22
+0.09406094290582073
+32
+1.3405806435479293
+13
+0.16124453363756153
+23
+0.09406094290582073
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.19785959242808948
+20
+0.11520065695492626
+30
+1.2854810201011309
+11
+0.18003798909713392
+21
+0.0486895278514653
+31
+1.3405806435479293
+12
+0.2208767806179276
+22
+0.059632249059325015
+32
+1.2854810201011309
+13
+0.2208767806179276
+23
+0.059632249059325015
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13134846332462868
+20
+0.13302226028588
+30
+1.3405806435479293
+11
+0.11352685999367468
+21
+0.19953338938934095
+31
+1.2854810201011309
+12
+0.09238714594456926
+22
+0.16291833059881272
+32
+1.3405806435479293
+13
+0.09238714594456926
+23
+0.16291833059881272
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.11352685999367468
+20
+0.19953338938934095
+30
+1.2854810201011309
+11
+0.13134846332462868
+21
+0.13302226028588
+31
+1.3405806435479293
+12
+0.16124453363756192
+22
+0.162918330598814
+32
+1.2854810201011309
+13
+0.16124453363756192
+23
+0.162918330598814
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.1268158397910666
+20
+0.03442869592545589
+30
+1.3828600716461388
+11
+0.16124453363756153
+21
+0.09406094290582073
+31
+1.3405806435479293
+12
+0.11352685999367468
+22
+0.06651113118242036
+32
+1.3828600716461388
+13
+0.11352685999367468
+23
+0.06651113118242036
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.16124453363756153
+20
+0.09406094290582073
+30
+1.3405806435479293
+11
+0.1268158397910666
+21
+0.03442869592545589
+31
+1.3828600716461388
+12
+0.18003798909713392
+22
+0.0486895278514653
+32
+1.3405806435479293
+13
+0.18003798909713392
+23
+0.0486895278514653
+33
+1.3405806435479293
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116789
+20
+0.01782160540991351
+30
+1.4094380312409234
+11
+0.11352685999367468
+21
+0.06651113118242036
+31
+1.3828600716461388
+12
+0.05795845209807354
+22
+0.034428695925455666
+32
+1.4094380312409234
+13
+0.05795845209807354
+23
+0.034428695925455666
+33
+1.4094380312409234
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.11352685999367468
+20
+0.06651113118242036
+30
+1.3828600716461388
+11
+0.06483733422116789
+21
+0.01782160540991351
+31
+1.4094380312409234
+12
+0.1268158397910666
+22
+0.03442869592545589
+32
+1.3828600716461388
+13
+0.1268158397910666
+23
+0.03442869592545589
+33
+1.3828600716461388
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.24654911820059633
+20
+0.06651113118241986
+30
+1.221316149587198
+11
+0.22872751486964182
+21
+2.078959393525537e-09
+31
+1.2854810201011309
+12
+0.2553054744644241
+22
+2.078959393525537e-09
+32
+1.221316149587198
+13
+0.2553054744644241
+23
+2.078959393525537e-09
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22872751486964182
+20
+2.078959393525537e-09
+30
+1.2854810201011309
+11
+0.24654911820059633
+21
+0.06651113118241986
+31
+1.221316149587198
+12
+0.2208767806179276
+22
+0.059632249059325015
+32
+1.2854810201011309
+13
+0.2208767806179276
+23
+0.059632249059325015
+33
+1.2854810201011309
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.30905309760007
+20
+0.08235659503094556
+30
+-0.029987258687029512
+11
+-0.001695615174016285
+21
+2.078961613971586e-09
+31
+-0.029987258687029512
+12
+-0.3198956001177664
+22
+3.9221799974509253e-07
+32
+-0.029987258687029512
+13
+-0.3198956001177664
+23
+3.9221799974509253e-07
+33
+-0.029987258687029512
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.30905309760007
+21
+0.08235659503094556
+31
+-0.029987258687029512
+12
+-0.27726469062630743
+22
+0.15910033213491825
+32
+-0.029987258687029512
+13
+-0.27726469062630743
+23
+0.15910033213491825
+33
+-0.029987258687029512
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.27726469062630743
+21
+0.15910033213491825
+31
+-0.029987258687029512
+12
+-0.226696706598913
+22
+0.2250016446713048
+32
+-0.029987258687029512
+13
+-0.226696706598913
+23
+0.2250016446713048
+33
+-0.029987258687029512
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.226696706598913
+21
+0.2250016446713048
+31
+-0.029987258687029512
+12
+-0.16079527006181052
+22
+0.2755694670978184
+32
+-0.029987258687029512
+13
+-0.16079527006181052
+23
+0.2755694670978184
+33
+-0.029987258687029512
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.16079527006181052
+21
+0.2755694670978184
+31
+-0.029987258687029512
+12
+-0.08405145500772823
+22
+0.30735768588336976
+32
+-0.029987258687029512
+13
+-0.08405145500772823
+23
+0.30735768588336976
+33
+-0.029987258687029512
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.08405145500772823
+21
+0.30735768588336976
+31
+-0.029987258687029512
+12
+-0.001695225607451445
+22
+0.31819998645023906
+32
+-0.029987258687029512
+13
+-0.001695225607451445
+23
+0.31819998645023906
+33
+-0.029987258687029512
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.001695225607451445
+21
+0.31819998645023906
+31
+-0.029987258687029512
+12
+-0.0015797266903812557
+22
+1.936872939811707e-09
+32
+-0.029987258687029512
+13
+-0.0015797266903812557
+23
+1.936872939811707e-09
+33
+-0.029987258687029512
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0015797266903812557
+20
+1.936872939811707e-09
+30
+-0.029987258687029512
+11
+-0.001695225607451445
+21
+0.31819998645023906
+31
+-0.029987258687029512
+12
+0.08066097720549281
+22
+0.30735748393254325
+32
+-0.029987258687029512
+13
+0.08066097720549281
+23
+0.30735748393254325
+33
+-0.029987258687029512
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0015797266903812557
+20
+1.936872939811707e-09
+30
+-0.029987258687029512
+11
+0.08066097720549281
+21
+0.30735748393254325
+31
+-0.029987258687029512
+12
+1.2212453270876722e-15
+22
+-3.885780586188048e-16
+32
+-0.029987258687029512
+13
+1.2212453270876722e-15
+23
+-3.885780586188048e-16
+33
+-0.029987258687029512
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+1.2212453270876722e-15
+20
+-3.885780586188048e-16
+30
+-0.029987258687029512
+11
+0.08066097720549281
+21
+0.30735748393254325
+31
+-0.029987258687029512
+12
+0.3165043686247876
+22
+-3.880600751848817e-07
+32
+-0.029987258687029512
+13
+0.3165043686247876
+23
+-3.880600751848817e-07
+33
+-0.029987258687029512
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3165043686247876
+20
+-3.880600751848817e-07
+30
+-0.029987258687029512
+11
+0.08066097720549281
+21
+0.30735748393254325
+31
+-0.029987258687029512
+12
+0.1574047143094663
+22
+0.27556907695878063
+32
+-0.029987258687029512
+13
+0.1574047143094663
+23
+0.27556907695878063
+33
+-0.029987258687029512
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3165043686247876
+20
+-3.880600751848817e-07
+30
+-0.029987258687029512
+11
+0.1574047143094663
+21
+0.27556907695878063
+31
+-0.029987258687029512
+12
+0.22330602684585132
+22
+0.2250010929313866
+32
+-0.029987258687029512
+13
+0.22330602684585132
+23
+0.2250010929313866
+33
+-0.029987258687029512
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3165043686247876
+20
+-3.880600751848817e-07
+30
+-0.029987258687029512
+11
+0.22330602684585132
+21
+0.2250010929313866
+31
+-0.029987258687029512
+12
+0.2738738492723656
+22
+0.1590996563942833
+32
+-0.029987258687029512
+13
+0.2738738492723656
+23
+0.1590996563942833
+33
+-0.029987258687029512
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3165043686247876
+20
+-3.880600751848817e-07
+30
+-0.029987258687029512
+11
+0.2738738492723656
+21
+0.1590996563942833
+31
+-0.029987258687029512
+12
+0.3056620680579174
+22
+0.08235584134020102
+32
+-0.029987258687029512
+13
+0.3056620680579174
+23
+0.08235584134020102
+33
+-0.029987258687029512
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.249896707965181
+20
+0.06651113118242025
+30
+1.221316149587198
+11
+-0.26771831129613466
+21
+2.078959449036688e-09
+31
+1.1524587618942086
+12
+-0.2586530642290092
+22
+2.078959449036688e-09
+32
+1.221316149587198
+13
+-0.2586530642290092
+23
+2.078959449036688e-09
+33
+1.221316149587198
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.26771831129613466
+20
+2.078959449036688e-09
+30
+1.1524587618942086
+11
+-0.249896707965181
+21
+0.06651113118242025
+31
+1.221316149587198
+12
+-0.2586530642290084
+22
+0.06885738977195188
+32
+1.1524587618942086
+13
+-0.2586530642290084
+23
+0.06885738977195188
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2586530642290084
+20
+0.06885738977195188
+30
+1.1524587618942086
+11
+-0.25742830375937065
+21
+0.06852921619319091
+31
+1.1428276089410967
+12
+-0.26771831129613466
+22
+2.078959449036688e-09
+32
+1.1524587618942086
+13
+-0.26771831129613466
+23
+2.078959449036688e-09
+33
+1.1524587618942086
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06685541923193933
+20
+0.2557545109560382
+30
+1.1428276089410931
+11
+0.12925057314949195
+21
+0.22676765945885802
+31
+1.1205886460425298
+12
+0.06597457487312747
+22
+0.25246715505539363
+32
+1.1169768174799652
+13
+0.06597457487312747
+23
+0.25246715505539363
+33
+1.1169768174799652
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.12925057314949195
+20
+0.22676765945885802
+30
+1.1205886460425298
+11
+0.06685541923193933
+21
+0.2557545109560382
+31
+1.1428276089410931
+12
+0.13012911820454431
+22
+0.22828934413094437
+32
+1.133935070472775
+13
+0.13012911820454431
+23
+0.22828934413094437
+33
+1.133935070472775
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13012911820454431
+20
+0.22828934413094437
+30
+1.133935070472775
+11
+0.18401862091672266
+21
+0.18569241787797314
+31
+1.1263613947799103
+12
+0.12925057314949195
+22
+0.22676765945885802
+32
+1.1205886460425298
+13
+0.12925057314949195
+23
+0.22676765945885802
+33
+1.1205886460425298
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.2660445184928011
+30
+1.1524587618942086
+11
+-0.001673794882292523
+21
+0.2612114402998337
+31
+1.1157478883328396
+12
+-0.0377296621751953
+22
+0.2565508285292213
+32
+1.1164028946013032
+13
+-0.0377296621751953
+23
+0.2565508285292213
+33
+1.1164028946013032
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.2660445184928011
+30
+1.1524587618942086
+11
+0.06597457487312747
+21
+0.25246715505539363
+31
+1.1169768174799652
+12
+-0.001673794882292523
+22
+0.2612114402998337
+32
+1.1157478883328396
+13
+-0.001673794882292523
+23
+0.2612114402998337
+33
+1.1157478883328396
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06597457487312747
+20
+0.25246715505539363
+30
+1.1169768174799652
+11
+-0.001673794882292523
+21
+0.2660445184928011
+31
+1.1524587618942086
+12
+0.06685541923193933
+22
+0.2557545109560382
+32
+1.1428276089410931
+13
+0.06685541923193933
+23
+0.2557545109560382
+33
+1.1428276089410931
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18401862091672266
+20
+0.18569241787797314
+30
+1.1263613947799103
+11
+0.22661554716969412
+21
+0.13180291516579662
+31
+1.133935070472775
+12
+0.22509386249760543
+22
+0.13092437011074415
+32
+1.1205886460425298
+13
+0.22509386249760543
+23
+0.13092437011074415
+33
+1.1205886460425298
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13227951399272905
+20
+0.2262157433373062
+30
+1.1157478883328396
+11
+-0.07053118257528798
+21
+0.24725106303322575
+31
+1.083601374201211
+12
+-0.13016342955565008
+22
+0.2225505775791794
+32
+1.083601374201211
+13
+-0.13016342955565008
+23
+0.2225505775791794
+33
+1.083601374201211
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.07053118257528798
+20
+0.24725106303322575
+30
+1.083601374201211
+11
+-0.13227951399272905
+21
+0.2262157433373062
+31
+1.1157478883328396
+12
+-0.06826223645016033
+22
+0.2485114492070778
+32
+1.085870320326334
+13
+-0.06826223645016033
+23
+0.2485114492070778
+33
+1.085870320326334
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06826223645016033
+20
+0.2485114492070778
+30
+1.085870320326334
+11
+-0.13227951399272905
+21
+0.2262157433373062
+31
+1.1157478883328396
+12
+-0.06928028989247559
+22
+0.2523108763786134
+32
+1.1157478883328396
+13
+-0.06928028989247559
+23
+0.2523108763786134
+33
+1.1157478883328396
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06928028989247559
+20
+0.2523108763786134
+30
+1.1157478883328396
+11
+-0.13227951399272905
+21
+0.2262157433373062
+31
+1.1157478883328396
+12
+-0.13259816291407706
+22
+0.22676765945885902
+32
+1.1205886460425298
+13
+-0.13259816291407706
+23
+0.22676765945885902
+33
+1.1205886460425298
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06928028989247559
+20
+0.2523108763786134
+30
+1.1157478883328396
+11
+-0.13259816291407706
+21
+0.22676765945885902
+31
+1.1205886460425298
+12
+-0.06932216463771257
+22
+0.2524671550553943
+32
+1.1169768174799652
+13
+-0.06932216463771257
+23
+0.2524671550553943
+33
+1.1169768174799652
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18637817417176358
+20
+0.1847043813684307
+30
+1.1157478883328396
+11
+-0.13016342955565008
+21
+0.2225505775791794
+31
+1.083601374201211
+12
+-0.18338557886171938
+22
+0.18171178605838667
+32
+1.083601374201211
+13
+-0.18338557886171938
+23
+0.18171178605838667
+33
+1.083601374201211
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13016342955565008
+20
+0.2225505775791794
+30
+1.083601374201211
+11
+-0.18637817417176358
+21
+0.1847043813684307
+31
+1.1157478883328396
+12
+-0.13227951399272905
+22
+0.2262157433373062
+32
+1.1157478883328396
+13
+-0.13227951399272905
+23
+0.2262157433373062
+33
+1.1157478883328396
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13227951399272905
+20
+0.2262157433373062
+30
+1.1157478883328396
+11
+-0.18637817417176358
+21
+0.1847043813684307
+31
+1.1157478883328396
+12
+-0.18736621068130693
+22
+0.18569241787797425
+32
+1.1263613947799127
+13
+-0.18736621068130693
+23
+0.18569241787797425
+33
+1.1263613947799127
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13227951399272905
+20
+0.2262157433373062
+30
+1.1157478883328396
+11
+-0.18736621068130693
+21
+0.18569241787797425
+31
+1.1263613947799127
+12
+-0.13259816291407706
+22
+0.22676765945885902
+32
+1.1205886460425298
+13
+-0.13259816291407706
+23
+0.22676765945885902
+33
+1.1205886460425298
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2539846691819466
+20
+0.06760649708914246
+30
+1.1157478883328396
+11
+-0.22422437038251186
+21
+0.12848963675231756
+31
+1.083601374201211
+12
+-0.2498967079651798
+22
+0.06651113118242008
+32
+1.083601374201211
+13
+-0.2498967079651798
+23
+0.06651113118242008
+33
+1.083601374201211
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.12848963675231756
+30
+1.083601374201211
+11
+-0.2539846691819466
+21
+0.06760649708914246
+31
+1.1157478883328396
+12
+-0.25742830375937065
+22
+0.06852921619319091
+32
+1.1428276089410967
+13
+-0.25742830375937065
+23
+0.06852921619319091
+33
+1.1428276089410967
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.12848963675231756
+30
+1.083601374201211
+11
+-0.25742830375937065
+21
+0.06852921619319091
+31
+1.1428276089410967
+12
+-0.2299631369342784
+22
+0.13180291516579612
+32
+1.133935070472781
+13
+-0.2299631369342784
+23
+0.13180291516579612
+33
+1.133935070472781
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.12848963675231756
+30
+1.083601374201211
+11
+-0.2299631369342784
+21
+0.13180291516579612
+31
+1.133935070472781
+12
+-0.2278895361406395
+22
+0.13060572118939684
+32
+1.1157478883328396
+13
+-0.2278895361406395
+23
+0.13060572118939684
+33
+1.1157478883328396
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.25742830375937065
+20
+0.06852921619319091
+30
+1.1428276089410967
+11
+-0.26288523310316675
+21
+2.078959449036688e-09
+31
+1.1157478883328396
+12
+-0.26771831129613466
+22
+2.078959449036688e-09
+32
+1.1524587618942086
+13
+-0.26771831129613466
+23
+2.078959449036688e-09
+33
+1.1524587618942086
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.26288523310316675
+20
+2.078959449036688e-09
+30
+1.1157478883328396
+11
+-0.25742830375937065
+21
+0.06852921619319091
+31
+1.1428276089410967
+12
+-0.258653064229008
+22
+2.0789595045478393e-09
+32
+1.083601374201211
+13
+-0.258653064229008
+23
+2.0789595045478393e-09
+33
+1.083601374201211
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.258653064229008
+20
+2.0789595045478393e-09
+30
+1.083601374201211
+11
+-0.25742830375937065
+21
+0.06852921619319091
+31
+1.1428276089410967
+12
+-0.2498967079651798
+22
+0.06651113118242008
+32
+1.083601374201211
+13
+-0.2498967079651798
+23
+0.06651113118242008
+33
+1.083601374201211
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2498967079651798
+20
+0.06651113118242008
+30
+1.083601374201211
+11
+-0.25742830375937065
+21
+0.06852921619319091
+31
+1.1428276089410967
+12
+-0.2539846691819466
+22
+0.06760649708914246
+32
+1.1157478883328396
+13
+-0.2539846691819466
+23
+0.06760649708914246
+33
+1.1157478883328396
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22509386249760543
+20
+0.13092437011074415
+30
+1.1205886460425298
+11
+0.2626308843757006
+21
+0.26432585403041065
+31
+1.1153131616555407
+12
+0.18401862091672266
+22
+0.18569241787797314
+32
+1.1263613947799103
+13
+0.18401862091672266
+23
+0.18569241787797314
+33
+1.1263613947799103
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.22509386249760543
+21
+0.13092437011074415
+31
+1.1205886460425298
+12
+0.25079335809414127
+22
+0.06764837183437955
+32
+1.1169768174799628
+13
+0.25079335809414127
+23
+0.06764837183437955
+33
+1.1169768174799628
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.25079335809414127
+21
+0.06764837183437955
+31
+1.1169768174799628
+12
+0.2595376433385824
+22
+2.078959393525537e-09
+32
+1.1157478883328396
+13
+0.2595376433385824
+23
+2.078959393525537e-09
+33
+1.1157478883328396
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.2595376433385824
+21
+2.078959393525537e-09
+31
+1.1157478883328396
+12
+0.3718950373839425
+22
+2.0789609478377713e-09
+32
+1.0999570863887107
+13
+0.3718950373839425
+23
+2.0789609478377713e-09
+33
+1.0999570863887107
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.3718950373839425
+21
+2.0789609478377713e-09
+31
+1.0999570863887107
+12
+0.3219319512611786
+22
+0.1868459359501376
+32
+1.1069789402167114
+13
+0.3219319512611786
+23
+0.1868459359501376
+33
+1.1069789402167114
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3219319512611786
+20
+0.1868459359501376
+30
+1.1069789402167114
+11
+0.3718950373839425
+21
+2.0789609478377713e-09
+31
+1.0999570863887107
+12
+0.3591904613034176
+22
+0.09669866074029804
+32
+1.1017425981156106
+13
+0.3591904613034176
+23
+0.09669866074029804
+33
+1.1017425981156106
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2278895361406395
+20
+0.13060572118939684
+30
+1.1157478883328396
+11
+-0.18338557886171938
+21
+0.18171178605838667
+31
+1.083601374201211
+12
+-0.22422437038251186
+22
+0.12848963675231756
+32
+1.083601374201211
+13
+-0.22422437038251186
+23
+0.12848963675231756
+33
+1.083601374201211
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838667
+30
+1.083601374201211
+11
+-0.2278895361406395
+21
+0.13060572118939684
+31
+1.1157478883328396
+12
+-0.2299631369342784
+22
+0.13180291516579612
+32
+1.133935070472781
+13
+-0.2299631369342784
+23
+0.13180291516579612
+33
+1.133935070472781
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838667
+30
+1.083601374201211
+11
+-0.2299631369342784
+21
+0.13180291516579612
+31
+1.133935070472781
+12
+-0.18736621068130693
+22
+0.18569241787797425
+32
+1.1263613947799127
+13
+-0.18736621068130693
+23
+0.18569241787797425
+33
+1.1263613947799127
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838667
+30
+1.083601374201211
+11
+-0.18736621068130693
+21
+0.18569241787797425
+31
+1.1263613947799127
+12
+-0.18637817417176358
+22
+0.1847043813684307
+32
+1.1157478883328396
+13
+-0.18637817417176358
+23
+0.1847043813684307
+33
+1.1157478883328396
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.25079335809414127
+20
+0.06764837183437955
+30
+1.1169768174799628
+11
+0.2643707215315495
+21
+2.078959393525537e-09
+31
+1.1524587618942086
+12
+0.2595376433385824
+22
+2.078959393525537e-09
+32
+1.1157478883328396
+13
+0.2595376433385824
+23
+2.078959393525537e-09
+33
+1.1157478883328396
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2643707215315495
+20
+2.078959393525537e-09
+30
+1.1524587618942086
+11
+0.25079335809414127
+21
+0.06764837183437955
+31
+1.1169768174799628
+12
+0.2540807139947864
+22
+0.06852921619319102
+32
+1.1428276089410956
+13
+0.2540807139947864
+23
+0.06852921619319102
+33
+1.1428276089410956
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18979567653601576
+20
+2.0789595045478393e-09
+30
+0.9643368802404846
+11
+-0.35829150997042125
+21
+0.09555005256687987
+31
+0.7958410468060751
+12
+-0.3706909491339097
+22
+4.544972251330215e-07
+32
+0.7834416076425874
+13
+-0.3706909491339097
+23
+4.544972251330215e-07
+33
+0.7834416076425874
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.35829150997042125
+20
+0.09555005256687987
+30
+0.7958410468060751
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.32186859092445047
+22
+0.18485247889635142
+32
+0.8322639658520461
+13
+-0.32186859092445047
+23
+0.18485247889635142
+33
+0.8322639658520461
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.32186859092445047
+20
+0.18485247889635142
+30
+0.8322639658520461
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.29191131237938345
+22
+0.22460181803280632
+32
+0.8622212443971131
+13
+-0.29191131237938345
+23
+0.22460181803280632
+33
+0.8622212443971131
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.29191131237938345
+20
+0.22460181803280632
+30
+0.8622212443971131
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.2637126619050216
+22
+0.26201769074666237
+32
+0.890419894871474
+13
+-0.2637126619050216
+23
+0.26201769074666237
+33
+0.890419894871474
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2637126619050216
+20
+0.26201769074666237
+30
+0.890419894871474
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.1875225673732847
+22
+0.3218626350699233
+32
+0.9666099894032089
+13
+-0.1875225673732847
+23
+0.3218626350699233
+33
+0.9666099894032089
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1875225673732847
+20
+0.3218626350699233
+30
+0.9666099894032089
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.1861142110017942
+22
+0.049420662629840184
+32
+0.9680183457747035
+13
+-0.1861142110017942
+23
+0.049420662629840184
+33
+0.9680183457747035
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1875225673732847
+20
+0.3218626350699233
+30
+0.9666099894032089
+11
+-0.1861142110017942
+21
+0.049420662629840184
+31
+0.9680183457747035
+12
+-0.17465408466303567
+22
+0.099870218948371
+32
+0.9794784721134615
+13
+-0.17465408466303567
+23
+0.099870218948371
+33
+0.9794784721134615
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1875225673732847
+20
+0.3218626350699233
+30
+0.9666099894032089
+11
+-0.17465408466303567
+21
+0.099870218948371
+31
+0.9794784721134615
+12
+-0.09822205169936674
+22
+0.36024333207843495
+32
+1.05591050507713
+13
+-0.09822205169936674
+23
+0.36024333207843495
+33
+1.05591050507713
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.17465408466303567
+21
+0.099870218948371
+31
+0.9794784721134615
+12
+-0.16443652005322085
+22
+0.12595478545169825
+32
+0.9896960367232768
+13
+-0.16443652005322085
+23
+0.12595478545169825
+33
+0.9896960367232768
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.16443652005322085
+21
+0.12595478545169825
+31
+0.9896960367232768
+12
+-0.1540765904307652
+22
+0.1524027976274323
+32
+1.0000559663457305
+13
+-0.1540765904307652
+23
+0.1524027976274323
+33
+1.0000559663457305
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.1540765904307652
+21
+0.1524027976274323
+31
+1.0000559663457305
+12
+-0.1346960530892106
+22
+0.1858583921844445
+32
+1.0194365036872854
+13
+-0.1346960530892106
+23
+0.1858583921844445
+33
+1.0194365036872854
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.1346960530892106
+21
+0.1858583921844445
+31
+1.0194365036872854
+12
+-0.11993215348338515
+22
+0.20482948759574693
+32
+1.0342004032931107
+13
+-0.11993215348338515
+23
+0.20482948759574693
+33
+1.0342004032931107
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.11993215348338515
+21
+0.20482948759574693
+31
+1.0342004032931107
+12
+-0.07053118257528798
+22
+0.24725106303322575
+32
+1.083601374201211
+13
+-0.07053118257528798
+23
+0.24725106303322575
+33
+1.083601374201211
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.07053118257528798
+21
+0.24725106303322575
+31
+1.083601374201211
+12
+-0.053235390890986944
+22
+0.3668191518579341
+32
+1.1009056923994525
+13
+-0.053235390890986944
+23
+0.3668191518579341
+33
+1.1009056923994525
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.053235390890986944
+20
+0.3668191518579341
+30
+1.1009056923994525
+11
+-0.07053118257528798
+21
+0.24725106303322575
+31
+1.083601374201211
+12
+-0.06826223645016033
+22
+0.2485114492070778
+32
+1.085870320326334
+13
+-0.06826223645016033
+23
+0.2485114492070778
+33
+1.085870320326334
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.053235390890986944
+20
+0.3668191518579341
+30
+1.1009056923994525
+11
+-0.06826223645016033
+21
+0.2485114492070778
+31
+1.085870320326334
+12
+-0.0377296621751953
+22
+0.2565508285292213
+32
+1.1164028946013032
+13
+-0.0377296621751953
+23
+0.2565508285292213
+33
+1.1164028946013032
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22509386249760543
+20
+0.13092437011074415
+30
+1.1205886460425298
+11
+0.2540807139947864
+21
+0.06852921619319102
+31
+1.1428276089410956
+12
+0.25079335809414127
+22
+0.06764837183437955
+32
+1.1169768174799628
+13
+0.25079335809414127
+23
+0.06764837183437955
+33
+1.1169768174799628
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2540807139947864
+20
+0.06852921619319102
+30
+1.1428276089410956
+11
+0.22509386249760543
+21
+0.13092437011074415
+31
+1.1205886460425298
+12
+0.22661554716969412
+22
+0.13180291516579662
+32
+1.133935070472775
+13
+0.22661554716969412
+23
+0.13180291516579662
+33
+1.133935070472775
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06928028989247559
+20
+0.2523108763786134
+30
+1.1157478883328396
+11
+-0.0377296621751953
+21
+0.2565508285292213
+31
+1.1164028946013032
+12
+-0.06826223645016033
+22
+0.2485114492070778
+32
+1.085870320326334
+13
+-0.06826223645016033
+23
+0.2485114492070778
+33
+1.085870320326334
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0377296621751953
+20
+0.2565508285292213
+30
+1.1164028946013032
+11
+-0.06928028989247559
+21
+0.2523108763786134
+31
+1.1157478883328396
+12
+-0.06932216463771257
+22
+0.2524671550553943
+32
+1.1169768174799652
+13
+-0.06932216463771257
+23
+0.2524671550553943
+33
+1.1169768174799652
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0377296621751953
+20
+0.2565508285292213
+30
+1.1164028946013032
+11
+-0.0016951576939718827
+21
+0.37359067095576093
+31
+1.0999540174532403
+12
+-0.053235390890986944
+22
+0.3668191518579341
+32
+1.1009056923994525
+13
+-0.053235390890986944
+23
+0.3668191518579341
+33
+1.1009056923994525
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016951576939718827
+20
+0.37359067095576093
+30
+1.0999540174532403
+11
+-0.0377296621751953
+21
+0.2565508285292213
+31
+1.1164028946013032
+12
+-0.001673794882292523
+22
+0.2612114402998337
+32
+1.1157478883328396
+13
+-0.001673794882292523
+23
+0.2612114402998337
+33
+1.1157478883328396
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016951576939718827
+20
+0.37359067095576093
+30
+1.0999540174532403
+11
+-0.001673794882292523
+21
+0.2612114402998337
+31
+1.1157478883328396
+12
+0.09500391648962592
+22
+0.3608857995504491
+32
+1.1017395706853292
+13
+0.09500391648962592
+23
+0.3608857995504491
+33
+1.1017395706853292
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09500391648962592
+20
+0.3608857995504491
+30
+1.1017395706853292
+11
+-0.001673794882292523
+21
+0.2612114402998337
+31
+1.1157478883328396
+12
+0.06597457487312747
+22
+0.25246715505539363
+32
+1.1169768174799652
+13
+0.06597457487312747
+23
+0.25246715505539363
+33
+1.1169768174799652
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09500391648962592
+20
+0.3608857995504491
+30
+1.1017395706853292
+11
+0.06597457487312747
+21
+0.25246715505539363
+31
+1.1169768174799652
+12
+0.12925057314949195
+22
+0.22676765945885802
+32
+1.1205886460425298
+13
+0.12925057314949195
+23
+0.22676765945885802
+33
+1.1205886460425298
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09500391648962592
+20
+0.3608857995504491
+30
+1.1017395706853292
+11
+0.12925057314949195
+21
+0.22676765945885802
+31
+1.1205886460425298
+12
+0.18515108995501323
+22
+0.32362707322580364
+32
+1.1069759431829398
+13
+0.18515108995501323
+23
+0.32362707322580364
+33
+1.1069759431829398
+70
+3
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18515108995501323
+20
+0.32362707322580364
+30
+1.1069759431829398
+11
+0.12925057314949195
+21
+0.22676765945885802
+31
+1.1205886460425298
+12
+0.18401862091672266
+22
+0.18569241787797314
+32
+1.1263613947799103
+13
+0.18401862091672266
+23
+0.18569241787797314
+33
+1.1263613947799103
+70
+13
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18515108995501323
+20
+0.32362707322580364
+30
+1.1069759431829398
+11
+0.18401862091672266
+21
+0.18569241787797314
+31
+1.1263613947799103
+12
+0.2626308843757006
+22
+0.26432585403041065
+32
+1.1153131616555407
+13
+0.2626308843757006
+23
+0.26432585403041065
+33
+1.1153131616555407
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.30905309760007
+20
+0.08235659503094556
+30
+-0.029987258687029512
+11
+-0.3198956001177664
+21
+3.9221799974509253e-07
+31
+-0.029987258687029512
+12
+-0.3706909491339097
+22
+4.544972251330215e-07
+32
+0.7834416076425874
+13
+-0.3706909491339097
+23
+4.544972251330215e-07
+33
+0.7834416076425874
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.35829150997042125
+20
+0.09555005256687987
+30
+0.7958410468060751
+11
+-0.30905309760007
+21
+0.08235659503094556
+31
+-0.029987258687029512
+12
+-0.3706909491339097
+22
+4.544972251330215e-07
+32
+0.7834416076425874
+13
+-0.3706909491339097
+23
+4.544972251330215e-07
+33
+0.7834416076425874
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2637126619050216
+20
+0.26201769074666237
+30
+0.890419894871474
+11
+-0.16079527006181052
+21
+0.2755694670978184
+31
+-0.029987258687029512
+12
+-0.226696706598913
+22
+0.2250016446713048
+32
+-0.029987258687029512
+13
+-0.226696706598913
+23
+0.2250016446713048
+33
+-0.029987258687029512
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1875225673732847
+20
+0.3218626350699233
+30
+0.9666099894032089
+11
+-0.16079527006181052
+21
+0.2755694670978184
+31
+-0.029987258687029512
+12
+-0.2637126619050216
+22
+0.26201769074666237
+32
+0.890419894871474
+13
+-0.2637126619050216
+23
+0.26201769074666237
+33
+0.890419894871474
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1875225673732847
+20
+0.3218626350699233
+30
+0.9666099894032089
+11
+-0.08405145500772823
+21
+0.30735768588336976
+31
+-0.029987258687029512
+12
+-0.16079527006181052
+22
+0.2755694670978184
+32
+-0.029987258687029512
+13
+-0.16079527006181052
+23
+0.2755694670978184
+33
+-0.029987258687029512
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.08405145500772823
+21
+0.30735768588336976
+31
+-0.029987258687029512
+12
+-0.1875225673732847
+22
+0.3218626350699233
+32
+0.9666099894032089
+13
+-0.1875225673732847
+23
+0.3218626350699233
+33
+0.9666099894032089
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.27726469062630743
+20
+0.15910033213491825
+30
+-0.029987258687029512
+11
+-0.30905309760007
+21
+0.08235659503094556
+31
+-0.029987258687029512
+12
+-0.35829150997042125
+22
+0.09555005256687987
+32
+0.7958410468060751
+13
+-0.35829150997042125
+23
+0.09555005256687987
+33
+0.7958410468060751
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.32186859092445047
+20
+0.18485247889635142
+30
+0.8322639658520461
+11
+-0.27726469062630743
+21
+0.15910033213491825
+31
+-0.029987258687029512
+12
+-0.35829150997042125
+22
+0.09555005256687987
+32
+0.7958410468060751
+13
+-0.35829150997042125
+23
+0.09555005256687987
+33
+0.7958410468060751
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22330602684585132
+20
+0.2250010929313866
+30
+-0.029987258687029512
+11
+0.3219319512611786
+21
+0.1868459359501376
+31
+1.1069789402167114
+12
+0.2738738492723656
+22
+0.1590996563942833
+32
+-0.029987258687029512
+13
+0.2738738492723656
+23
+0.1590996563942833
+33
+-0.029987258687029512
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.3219319512611786
+21
+0.1868459359501376
+31
+1.1069789402167114
+12
+0.22330602684585132
+22
+0.2250010929313866
+32
+-0.029987258687029512
+13
+0.22330602684585132
+23
+0.2250010929313866
+33
+-0.029987258687029512
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.226696706598913
+20
+0.2250016446713048
+30
+-0.029987258687029512
+11
+-0.27726469062630743
+21
+0.15910033213491825
+31
+-0.029987258687029512
+12
+-0.32186859092445047
+22
+0.18485247889635142
+32
+0.8322639658520461
+13
+-0.32186859092445047
+23
+0.18485247889635142
+33
+0.8322639658520461
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18515108995501323
+20
+0.32362707322580364
+30
+1.1069759431829398
+11
+0.22330602684585132
+21
+0.2250010929313866
+31
+-0.029987258687029512
+12
+0.1574047143094663
+22
+0.27556907695878063
+32
+-0.029987258687029512
+13
+0.1574047143094663
+23
+0.27556907695878063
+33
+-0.029987258687029512
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.22330602684585132
+21
+0.2250010929313866
+31
+-0.029987258687029512
+12
+0.18515108995501323
+22
+0.32362707322580364
+32
+1.1069759431829398
+13
+0.18515108995501323
+23
+0.32362707322580364
+33
+1.1069759431829398
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.001695225607451445
+21
+0.31819998645023906
+31
+-0.029987258687029512
+12
+-0.08405145500772823
+22
+0.30735768588336976
+32
+-0.029987258687029512
+13
+-0.08405145500772823
+23
+0.30735768588336976
+33
+-0.029987258687029512
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016951576939718827
+20
+0.37359067095576093
+30
+1.0999540174532403
+11
+-0.001695225607451445
+21
+0.31819998645023906
+31
+-0.029987258687029512
+12
+-0.09822205169936674
+22
+0.36024333207843495
+32
+1.05591050507713
+13
+-0.09822205169936674
+23
+0.36024333207843495
+33
+1.05591050507713
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.053235390890986944
+20
+0.3668191518579341
+30
+1.1009056923994525
+11
+-0.0016951576939718827
+21
+0.37359067095576093
+31
+1.0999540174532403
+12
+-0.09822205169936674
+22
+0.36024333207843495
+32
+1.05591050507713
+13
+-0.09822205169936674
+23
+0.36024333207843495
+33
+1.05591050507713
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.29191131237938345
+20
+0.22460181803280632
+30
+0.8622212443971131
+11
+-0.226696706598913
+21
+0.2250016446713048
+31
+-0.029987258687029512
+12
+-0.32186859092445047
+22
+0.18485247889635142
+32
+0.8322639658520461
+13
+-0.32186859092445047
+23
+0.18485247889635142
+33
+0.8322639658520461
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.226696706598913
+20
+0.2250016446713048
+30
+-0.029987258687029512
+11
+-0.29191131237938345
+21
+0.22460181803280632
+31
+0.8622212443971131
+12
+-0.2637126619050216
+22
+0.26201769074666237
+32
+0.890419894871474
+13
+-0.2637126619050216
+23
+0.26201769074666237
+33
+0.890419894871474
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016951576939718827
+20
+0.37359067095576093
+30
+1.0999540174532403
+11
+0.08066097720549281
+21
+0.30735748393254325
+31
+-0.029987258687029512
+12
+-0.001695225607451445
+22
+0.31819998645023906
+32
+-0.029987258687029512
+13
+-0.001695225607451445
+23
+0.31819998645023906
+33
+-0.029987258687029512
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.08066097720549281
+20
+0.30735748393254325
+30
+-0.029987258687029512
+11
+-0.0016951576939718827
+21
+0.37359067095576093
+31
+1.0999540174532403
+12
+0.09500391648962592
+22
+0.3608857995504491
+32
+1.1017395706853292
+13
+0.09500391648962592
+23
+0.3608857995504491
+33
+1.1017395706853292
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2738738492723656
+20
+0.1590996563942833
+30
+-0.029987258687029512
+11
+0.3591904613034176
+21
+0.09669866074029804
+31
+1.1017425981156106
+12
+0.3056620680579174
+22
+0.08235584134020102
+32
+-0.029987258687029512
+13
+0.3056620680579174
+23
+0.08235584134020102
+33
+-0.029987258687029512
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3219319512611786
+20
+0.1868459359501376
+30
+1.1069789402167114
+11
+0.3591904613034176
+21
+0.09669866074029804
+31
+1.1017425981156106
+12
+0.2738738492723656
+22
+0.1590996563942833
+32
+-0.029987258687029512
+13
+0.2738738492723656
+23
+0.1590996563942833
+33
+-0.029987258687029512
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09500391648962592
+20
+0.3608857995504491
+30
+1.1017395706853292
+11
+0.1574047143094663
+21
+0.27556907695878063
+31
+-0.029987258687029512
+12
+0.08066097720549281
+22
+0.30735748393254325
+32
+-0.029987258687029512
+13
+0.08066097720549281
+23
+0.30735748393254325
+33
+-0.029987258687029512
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18515108995501323
+20
+0.32362707322580364
+30
+1.1069759431829398
+11
+0.1574047143094663
+21
+0.27556907695878063
+31
+-0.029987258687029512
+12
+0.09500391648962592
+22
+0.3608857995504491
+32
+1.1017395706853292
+13
+0.09500391648962592
+23
+0.3608857995504491
+33
+1.1017395706853292
+70
+0
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3056620680579174
+20
+0.08235584134020102
+30
+-0.029987258687029512
+11
+0.3718950373839425
+21
+2.0789609478377713e-09
+31
+1.0999570863887107
+12
+0.3165043686247876
+22
+-3.880600751848817e-07
+32
+-0.029987258687029512
+13
+0.3165043686247876
+23
+-3.880600751848817e-07
+33
+-0.029987258687029512
+70
+1
+ 0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3718950373839425
+20
+2.0789609478377713e-09
+30
+1.0999570863887107
+11
+0.3056620680579174
+21
+0.08235584134020102
+31
+-0.029987258687029512
+12
+0.3591904613034176
+22
+0.09669866074029804
+32
+1.1017425981156106
+13
+0.3591904613034176
+23
+0.09669866074029804
+33
+1.1017425981156106
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.296250080065389
+20
+0.05625570433824323
+30
+0.6644157568117056
+11
+0.2555856897176694
+21
+0.0770228110613641
+31
+0.7375987435993245
+12
+0.25907879909916354
+22
+0.0425646293072397
+32
+0.7311194193909711
+13
+0.25907879909916354
+23
+0.0425646293072397
+33
+0.7311194193909711
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.2555856897176694
+20
+0.0770228110613641
+30
+0.7375987435993245
+11
+0.296250080065389
+21
+0.05625570433824323
+31
+0.6644157568117056
+12
+0.2902821751225073
+22
+0.10111068285304725
+32
+0.67540282766255
+13
+0.2902821751225073
+23
+0.10111068285304725
+33
+0.67540282766255
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.296250080065389
+20
+0.05625570433824323
+30
+0.6644157568117056
+11
+0.26337177035066883
+21
+0.00021611756771083845
+31
+0.7232330781817133
+12
+0.30144711598939
+22
+1.3877787807814457e-15
+32
+0.6548478762140961
+13
+0.30144711598939
+23
+1.3877787807814457e-15
+33
+0.6548478762140961
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.26337177035066883
+20
+0.00021611756771083845
+30
+0.7232330781817133
+11
+0.296250080065389
+21
+0.05625570433824323
+31
+0.6644157568117056
+12
+0.25907879909916354
+22
+0.0425646293072397
+32
+0.7311194193909711
+13
+0.25907879909916354
+23
+0.0425646293072397
+33
+0.7311194193909711
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.08597126774640101
+20
+0.305931990758305
+30
+1.1950892539563733
+11
+0.14591265330279257
+21
+0.30907788121177326
+31
+1.1068841952682413
+12
+0.09248182231156576
+22
+0.34122279747238193
+32
+1.1068841952682413
+13
+0.09248182231156576
+23
+0.34122279747238193
+33
+1.1068841952682413
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.30907788121177326
+30
+1.1068841952682413
+11
+0.08597126774640101
+21
+0.305931990758305
+31
+1.1950892539563733
+12
+0.14591265330279257
+22
+0.2927773222601686
+32
+1.1435553817691761
+13
+0.14591265330279257
+23
+0.2927773222601686
+33
+1.1435553817691761
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.2927773222601686
+30
+1.1435553817691761
+11
+0.08597126774640101
+21
+0.305931990758305
+31
+1.1950892539563733
+12
+0.13856428289474443
+22
+0.2742911190654399
+32
+1.1950892539563733
+13
+0.13856428289474443
+23
+0.2742911190654399
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.17315837194884964
+20
+0.31485375811798544
+30
+0.8910308472281347
+11
+0.16483919203682462
+21
+0.3090020498238778
+31
+0.9060890011061947
+12
+0.17165022633163995
+22
+0.2974743709819362
+32
+0.8934201589578008
+13
+0.17165022633163995
+23
+0.2974743709819362
+33
+0.8934201589578008
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.16483919203682462
+20
+0.3090020498238778
+30
+0.9060890011061947
+11
+0.1624333997344558
+21
+0.32322972405982175
+31
+0.9107758047501918
+12
+0.16148066621521584
+22
+0.30464032797763685
+32
+0.9121263906088999
+13
+0.16148066621521584
+23
+0.30464032797763685
+33
+0.9121263906088999
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.1624333997344558
+20
+0.32322972405982175
+30
+0.9107758047501918
+11
+0.16483919203682462
+21
+0.3090020498238778
+31
+0.9060890011061947
+12
+0.17315837194884964
+22
+0.31485375811798544
+32
+0.8910308472281347
+13
+0.17315837194884964
+23
+0.31485375811798544
+33
+0.8910308472281347
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.18260248174312899
+20
+0.22232457698922659
+30
+1.198099275585573
+11
+0.11855648811852992
+21
+0.22395776089577168
+31
+1.2708326549933064
+12
+0.15543163413708405
+22
+0.1828607460436268
+32
+1.2708326549933064
+13
+0.15543163413708405
+23
+0.1828607460436268
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.11855648811852992
+20
+0.22395776089577168
+30
+1.2708326549933064
+11
+0.18260248174312899
+21
+0.22232457698922659
+31
+1.198099275585573
+12
+0.17760884479078798
+22
+0.2307763099490301
+32
+1.1950892539563756
+13
+0.17760884479078798
+23
+0.2307763099490301
+33
+1.1950892539563756
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.11855648811852992
+20
+0.22395776089577168
+30
+1.2708326549933064
+11
+0.17760884479078798
+21
+0.2307763099490301
+31
+1.1950892539563756
+12
+0.13856428289474443
+22
+0.2742911190654399
+32
+1.1950892539563733
+13
+0.13856428289474443
+23
+0.2742911190654399
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.21079763456608602
+20
+0.15200255171741062
+30
+1.2116649767211727
+11
+0.15543163413708405
+21
+0.1828607460436268
+31
+1.2708326549933064
+12
+0.18372692886278563
+22
+0.12930207354027978
+32
+1.2708326549933064
+13
+0.18372692886278563
+23
+0.12930207354027978
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.15543163413708405
+20
+0.1828607460436268
+30
+1.2708326549933064
+11
+0.21079763456608602
+21
+0.15200255171741062
+31
+1.2116649767211727
+12
+0.19513291276861866
+22
+0.20111681641123347
+32
+1.1960904299564608
+13
+0.19513291276861866
+23
+0.20111681641123347
+33
+1.1960904299564608
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.15543163413708405
+20
+0.1828607460436268
+30
+1.2708326549933064
+11
+0.19513291276861866
+21
+0.20111681641123347
+31
+1.1960904299564608
+12
+0.18260248174312899
+22
+0.22232457698922659
+32
+1.198099275585573
+13
+0.18260248174312899
+23
+0.22232457698922659
+33
+1.198099275585573
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.22483831324751347
+20
+0.1079802180841335
+30
+1.3469345417672878
+11
+0.22607406136431274
+21
+0.10410572475522972
+31
+1.2088129668204062
+12
+0.22607406136431385
+22
+0.1041057247552285
+32
+1.347444628490924
+13
+0.22607406136431385
+23
+0.1041057247552285
+33
+1.347444628490924
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.22607406136431274
+20
+0.10410572475522972
+30
+1.2088129668204062
+11
+0.22483831324751347
+21
+0.1079802180841335
+31
+1.3469345417672878
+12
+0.21079763456608602
+22
+0.15200255171741062
+32
+1.2116649767211727
+13
+0.21079763456608602
+23
+0.15200255171741062
+33
+1.2116649767211727
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.21079763456608602
+20
+0.15200255171741062
+30
+1.2116649767211727
+11
+0.22483831324751347
+21
+0.1079802180841335
+31
+1.3469345417672878
+12
+0.19513291276861866
+22
+0.20111681641123635
+32
+1.3083560995869057
+13
+0.19513291276861866
+23
+0.20111681641123635
+33
+1.3083560995869057
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.21079763456608602
+20
+0.15200255171741062
+30
+1.2116649767211727
+11
+0.19513291276861866
+21
+0.20111681641123635
+31
+1.3083560995869057
+12
+0.19513291276861866
+22
+0.20111681641123347
+32
+1.1960904299564608
+13
+0.19513291276861866
+23
+0.20111681641123347
+33
+1.1960904299564608
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.26337177035066883
+20
+0.00021611756771083845
+30
+0.7232330781817133
+11
+0.263393678712192
+21
+1.9984014443252818e-15
+31
+1.3611504071680836
+12
+0.263393678712192
+22
+6.106226635438361e-16
+32
+0.7231946266820767
+13
+0.263393678712192
+23
+6.106226635438361e-16
+33
+0.7231946266820767
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.263393678712192
+20
+1.9984014443252818e-15
+30
+1.3611504071680836
+11
+0.26337177035066883
+21
+0.00021611756771083845
+31
+0.7232330781817133
+12
+0.2524474623535692
+22
+0.10798021808412805
+32
+1.3469345417672878
+13
+0.2524474623535692
+23
+0.10798021808412805
+33
+1.3469345417672878
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.26337177035066883
+21
+0.00021611756771083845
+31
+0.7232330781817133
+12
+0.25907879909916354
+22
+0.0425646293072397
+32
+0.7311194193909711
+13
+0.25907879909916354
+23
+0.0425646293072397
+33
+0.7311194193909711
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.25907879909916354
+21
+0.0425646293072397
+31
+0.7311194193909711
+12
+0.2555856897176694
+22
+0.0770228110613641
+32
+0.7375987435993245
+13
+0.2555856897176694
+23
+0.0770228110613641
+33
+0.7375987435993245
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.2555856897176694
+21
+0.0770228110613641
+31
+0.7375987435993245
+12
+0.25192819408071887
+22
+0.11310260005700445
+32
+0.7446065308916078
+13
+0.25192819408071887
+23
+0.11310260005700445
+33
+0.7446065308916078
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.25192819408071887
+21
+0.11310260005700445
+31
+0.7446065308916078
+12
+0.25192819408071765
+22
+0.11310260005700845
+32
+1.3448127816824647
+13
+0.25192819408071765
+23
+0.11310260005700845
+33
+1.3448127816824647
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.274037280744151
+20
+0.15716672872113313
+30
+0.7053101078903244
+11
+0.23789809216172886
+21
+0.15709177191973378
+31
+0.7705295873705995
+12
+0.2480027252213851
+22
+0.12541028857502534
+32
+0.7518189517863902
+13
+0.2480027252213851
+23
+0.12541028857502534
+33
+0.7518189517863902
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.23789809216172886
+20
+0.15709177191973378
+30
+0.7705295873705995
+11
+0.274037280744151
+21
+0.15716672872113313
+31
+0.7053101078903244
+12
+0.2591667482690694
+22
+0.19321003684080962
+32
+0.7326871515023154
+13
+0.2591667482690694
+23
+0.19321003684080962
+33
+0.7326871515023154
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.2591667482690694
+20
+0.19321003684080962
+30
+0.7326871515023154
+11
+0.21954103663658775
+21
+0.21464742440548745
+31
+0.8047207977789652
+12
+0.23789809216172886
+22
+0.15709177191973378
+32
+0.7705295873705995
+13
+0.23789809216172886
+23
+0.15709177191973378
+33
+0.7705295873705995
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.21954103663658775
+20
+0.21464742440548745
+30
+0.8047207977789652
+11
+0.2591667482690694
+21
+0.19321003684080962
+31
+0.7326871515023154
+12
+0.23066726183653696
+22
+0.24695009092044307
+32
+0.7851554598356051
+13
+0.23066726183653696
+23
+0.24695009092044307
+33
+0.7851554598356051
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.214135315851808
+20
+0.2688995990817393
+30
+0.8155912096632217
+11
+0.17165022633163995
+21
+0.2974743709819362
+31
+0.8934201589578008
+12
+0.20642658047224793
+22
+0.2386153747599219
+32
+0.8289927497633759
+13
+0.20642658047224793
+23
+0.2386153747599219
+33
+0.8289927497633759
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.17165022633163995
+20
+0.2974743709819362
+30
+0.8934201589578008
+11
+0.214135315851808
+21
+0.2688995990817393
+31
+0.8155912096632217
+12
+0.17315837194884964
+22
+0.31485375811798544
+32
+0.8910308472281347
+13
+0.17315837194884964
+23
+0.31485375811798544
+33
+0.8910308472281347
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.22876729304572974
+20
+0.07753802914401464
+30
+1.217426749765848
+11
+0.18372692886278563
+21
+0.12930207354027978
+31
+1.2708326549933064
+12
+0.20151409472026383
+22
+0.06693167840694275
+32
+1.2708326549933064
+13
+0.20151409472026383
+23
+0.06693167840694275
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.18372692886278563
+20
+0.12930207354027978
+30
+1.2708326549933064
+11
+0.22876729304572974
+21
+0.07753802914401464
+31
+1.217426749765848
+12
+0.22607406136431274
+22
+0.10410572475522972
+32
+1.2088129668204062
+13
+0.22607406136431274
+23
+0.10410572475522972
+33
+1.2088129668204062
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.18372692886278563
+20
+0.12930207354027978
+30
+1.2708326549933064
+11
+0.22607406136431274
+21
+0.10410572475522972
+31
+1.2088129668204062
+12
+0.21079763456608602
+22
+0.15200255171741062
+32
+1.2116649767211727
+13
+0.21079763456608602
+23
+0.15200255171741062
+33
+1.2116649767211727
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.22876729304572974
+20
+0.07753802914401464
+30
+1.217426749765848
+11
+0.20758096575101137
+21
+2.7755575615628914e-16
+31
+1.2708326549933064
+12
+0.23662751094573675
+22
+-2.7755575615628914e-16
+32
+1.2158519800606344
+13
+0.23662751094573675
+23
+-2.7755575615628914e-16
+33
+1.2158519800606344
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.20758096575101137
+20
+2.7755575615628914e-16
+30
+1.2708326549933064
+11
+0.22876729304572974
+21
+0.07753802914401464
+31
+1.217426749765848
+12
+0.20151409472026383
+22
+0.06693167840694275
+32
+1.2708326549933064
+13
+0.20151409472026383
+23
+0.06693167840694275
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.23662751094573675
+20
+1.8318679906315083e-15
+30
+1.3611504071680836
+11
+0.22876729304572974
+21
+0.07753802914401464
+31
+1.217426749765848
+12
+0.23662751094573675
+22
+-2.7755575615628914e-16
+32
+1.2158519800606344
+13
+0.23662751094573675
+23
+-2.7755575615628914e-16
+33
+1.2158519800606344
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.22876729304572974
+20
+0.07753802914401464
+30
+1.217426749765848
+11
+0.23662751094573675
+21
+1.8318679906315083e-15
+31
+1.3611504071680836
+12
+0.22607406136431385
+22
+0.1041057247552285
+32
+1.347444628490924
+13
+0.22607406136431385
+23
+0.1041057247552285
+33
+1.347444628490924
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.22876729304572974
+20
+0.07753802914401464
+30
+1.217426749765848
+11
+0.22607406136431385
+21
+0.1041057247552285
+31
+1.347444628490924
+12
+0.22607406136431274
+22
+0.10410572475522972
+32
+1.2088129668204062
+13
+0.22607406136431274
+23
+0.10410572475522972
+33
+1.2088129668204062
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.26337177035066883
+20
+0.00021611756771083845
+30
+0.7232330781817133
+11
+0.263393678712192
+21
+6.106226635438361e-16
+31
+0.7231946266820767
+12
+0.30144711598939
+22
+1.3877787807814457e-15
+32
+0.6548478762140961
+13
+0.30144711598939
+23
+1.3877787807814457e-15
+33
+0.6548478762140961
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.296250080065389
+20
+0.05625570433824323
+30
+0.6644157568117056
+11
+0.30144711598939
+21
+1.3877787807814457e-15
+31
+0.6548478762140961
+12
+0.42920423721993983
+22
+2.7755575615628914e-15
+32
+0.0
+13
+0.42920423721993983
+23
+2.7755575615628914e-15
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632604
+20
+0.21849744483100497
+30
+1.2976625093750926
+11
+0.1907104937441224
+21
+0.2086017627515685
+31
+1.3052557332991035
+12
+0.19513291276861866
+22
+0.20111681641123635
+32
+1.3083560995869057
+13
+0.19513291276861866
+23
+0.20111681641123635
+33
+1.3083560995869057
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.09327307500958115
+20
+0.34551182473544184
+30
+1.0731565574038182
+11
+0.14591265330279257
+21
+0.3224508871153656
+31
+1.0122285079127469
+12
+0.1060148804133424
+22
+0.3464540804912427
+32
+1.0122285079127469
+13
+0.1060148804133424
+23
+0.3464540804912427
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.3224508871153656
+30
+1.0122285079127469
+11
+0.09327307500958115
+21
+0.34551182473544184
+31
+1.0731565574038182
+12
+0.14591265330279257
+22
+0.30907788121177326
+32
+1.1068841952682413
+13
+0.14591265330279257
+23
+0.30907788121177326
+33
+1.1068841952682413
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.30907788121177326
+30
+1.1068841952682413
+11
+0.09327307500958115
+21
+0.34551182473544184
+31
+1.0731565574038182
+12
+0.09248182231156576
+22
+0.34122279747238193
+32
+1.1068841952682413
+13
+0.09248182231156576
+23
+0.34122279747238193
+33
+1.1068841952682413
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632715
+20
+0.21849744483100653
+30
+0.8070247740079369
+11
+0.17310779103353768
+21
+0.29500744201820384
+31
+1.2389543236831635
+12
+0.21831309401632604
+22
+0.21849744483100497
+32
+1.2976625093750926
+13
+0.21831309401632604
+23
+0.21849744483100497
+33
+1.2976625093750926
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.17310779103353768
+20
+0.29500744201820384
+30
+1.2389543236831635
+11
+0.21831309401632715
+21
+0.21849744483100653
+31
+0.8070247740079369
+12
+0.20642658047224793
+22
+0.2386153747599219
+32
+0.8289927497633759
+13
+0.20642658047224793
+23
+0.2386153747599219
+33
+0.8289927497633759
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.17310779103353768
+20
+0.29500744201820384
+30
+1.2389543236831635
+11
+0.20642658047224793
+21
+0.2386153747599219
+31
+0.8289927497633759
+12
+0.17165022633163995
+22
+0.2974743709819362
+32
+0.8934201589578008
+13
+0.17165022633163995
+23
+0.2974743709819362
+33
+0.8934201589578008
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.17310779103353768
+20
+0.29500744201820384
+30
+1.2389543236831635
+11
+0.17165022633163995
+21
+0.2974743709819362
+31
+0.8934201589578008
+12
+0.1648391920368235
+22
+0.309002049823879
+32
+1.2207161957078443
+13
+0.1648391920368235
+23
+0.309002049823879
+33
+1.2207161957078443
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.1648391920368235
+20
+0.309002049823879
+30
+1.2207161957078443
+11
+0.17165022633163995
+21
+0.2974743709819362
+31
+0.8934201589578008
+12
+0.16483919203682462
+22
+0.3090020498238778
+32
+0.9060890011061947
+13
+0.16483919203682462
+23
+0.3090020498238778
+33
+0.9060890011061947
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305396
+30
+1.0876716112414513
+11
+0.14591265330279257
+21
+0.2927773222601686
+31
+1.1435553817691761
+12
+0.14591265330279146
+22
+0.28442212939005906
+32
+1.159696374922908
+13
+0.14591265330279146
+23
+0.28442212939005906
+33
+1.159696374922908
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.2927773222601686
+30
+1.1435553817691761
+11
+0.14628261733798686
+21
+0.28490260216305396
+31
+1.0876716112414513
+12
+0.14591265330279257
+22
+0.30907788121177326
+32
+1.1068841952682413
+13
+0.14591265330279257
+23
+0.30907788121177326
+33
+1.1068841952682413
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.2480027252213851
+20
+0.12541028857502534
+30
+0.7518189517863902
+11
+0.25192819408071765
+21
+0.11310260005700845
+31
+1.3448127816824647
+12
+0.25192819408071887
+22
+0.11310260005700445
+32
+0.7446065308916078
+13
+0.25192819408071887
+23
+0.11310260005700445
+33
+0.7446065308916078
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071765
+20
+0.11310260005700845
+30
+1.3448127816824647
+11
+0.2480027252213851
+21
+0.12541028857502534
+31
+0.7518189517863902
+12
+0.21831309401632604
+22
+0.21849744483100497
+32
+1.2976625093750926
+13
+0.21831309401632604
+23
+0.21849744483100497
+33
+1.2976625093750926
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632604
+20
+0.21849744483100497
+30
+1.2976625093750926
+11
+0.2480027252213851
+21
+0.12541028857502534
+31
+0.7518189517863902
+12
+0.23789809216172886
+22
+0.15709177191973378
+32
+0.7705295873705995
+13
+0.23789809216172886
+23
+0.15709177191973378
+33
+0.7705295873705995
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632604
+20
+0.21849744483100497
+30
+1.2976625093750926
+11
+0.23789809216172886
+21
+0.15709177191973378
+31
+0.7705295873705995
+12
+0.21954103663658775
+22
+0.21464742440548745
+32
+0.8047207977789652
+13
+0.21954103663658775
+23
+0.21464742440548745
+33
+0.8047207977789652
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632604
+20
+0.21849744483100497
+30
+1.2976625093750926
+11
+0.21954103663658775
+21
+0.21464742440548745
+31
+0.8047207977789652
+12
+0.21831309401632715
+22
+0.21849744483100653
+32
+0.8070247740079369
+13
+0.21831309401632715
+23
+0.21849744483100653
+33
+0.8070247740079369
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.23662751094573675
+20
+1.8318679906315083e-15
+30
+1.3611504071680836
+11
+0.2524474623535692
+21
+0.10798021808412805
+31
+1.3469345417672878
+12
+0.22607406136431385
+22
+0.1041057247552285
+32
+1.347444628490924
+13
+0.22607406136431385
+23
+0.1041057247552285
+33
+1.347444628490924
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.23662751094573675
+21
+1.8318679906315083e-15
+31
+1.3611504071680836
+12
+0.263393678712192
+22
+1.9984014443252818e-15
+32
+1.3611504071680836
+13
+0.263393678712192
+23
+1.9984014443252818e-15
+33
+1.3611504071680836
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.2902821751225073
+20
+0.10111068285304725
+30
+0.67540282766255
+11
+0.25192819408071887
+21
+0.11310260005700445
+31
+0.7446065308916078
+12
+0.2555856897176694
+22
+0.0770228110613641
+32
+0.7375987435993245
+13
+0.2555856897176694
+23
+0.0770228110613641
+33
+0.7375987435993245
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071887
+20
+0.11310260005700445
+30
+0.7446065308916078
+11
+0.2902821751225073
+21
+0.10111068285304725
+31
+0.67540282766255
+12
+0.274037280744151
+22
+0.15716672872113313
+32
+0.7053101078903244
+13
+0.274037280744151
+23
+0.15716672872113313
+33
+0.7053101078903244
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071887
+20
+0.11310260005700445
+30
+0.7446065308916078
+11
+0.274037280744151
+21
+0.15716672872113313
+31
+0.7053101078903244
+12
+0.2480027252213851
+22
+0.12541028857502534
+32
+0.7518189517863902
+13
+0.2480027252213851
+23
+0.12541028857502534
+33
+0.7518189517863902
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071765
+20
+0.11310260005700845
+30
+1.3448127816824647
+11
+0.19513291276861866
+21
+0.20111681641123635
+31
+1.3083560995869057
+12
+0.22483831324751347
+22
+0.1079802180841335
+32
+1.3469345417672878
+13
+0.22483831324751347
+23
+0.1079802180841335
+33
+1.3469345417672878
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.19513291276861866
+20
+0.20111681641123635
+30
+1.3083560995869057
+11
+0.18260248174312899
+21
+0.22232457698922659
+31
+1.198099275585573
+12
+0.19513291276861866
+22
+0.20111681641123347
+32
+1.1960904299564608
+13
+0.19513291276861866
+23
+0.20111681641123347
+33
+1.1960904299564608
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.18260248174312899
+20
+0.22232457698922659
+30
+1.198099275585573
+11
+0.19513291276861866
+21
+0.20111681641123635
+31
+1.3083560995869057
+12
+0.1907104937441224
+22
+0.2086017627515685
+32
+1.3052557332991035
+13
+0.1907104937441224
+23
+0.2086017627515685
+33
+1.3052557332991035
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.18260248174312899
+20
+0.22232457698922659
+30
+1.198099275585573
+11
+0.1907104937441224
+21
+0.2086017627515685
+31
+1.3052557332991035
+12
+0.17760884479078798
+22
+0.2307763099490301
+32
+1.1950892539563756
+13
+0.17760884479078798
+23
+0.2307763099490301
+33
+1.1950892539563756
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.1907104937441224
+20
+0.2086017627515685
+30
+1.3052557332991035
+11
+0.15406334402645439
+21
+0.2950074420182055
+31
+1.238954323683159
+12
+0.14628261733798686
+22
+0.28490260216305374
+32
+1.2467080400132249
+13
+0.14628261733798686
+23
+0.28490260216305374
+33
+1.2467080400132249
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.15406334402645439
+20
+0.2950074420182055
+30
+1.238954323683159
+11
+0.1907104937441224
+21
+0.2086017627515685
+31
+1.3052557332991035
+12
+0.17310779103353768
+22
+0.29500744201820384
+32
+1.2389543236831635
+13
+0.17310779103353768
+23
+0.29500744201820384
+33
+1.2389543236831635
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.17310779103353768
+20
+0.29500744201820384
+30
+1.2389543236831635
+11
+0.1907104937441224
+21
+0.2086017627515685
+31
+1.3052557332991035
+12
+0.21831309401632604
+22
+0.21849744483100497
+32
+1.2976625093750926
+13
+0.21831309401632604
+23
+0.21849744483100497
+33
+1.2976625093750926
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.25192819408071765
+21
+0.11310260005700845
+31
+1.3448127816824647
+12
+0.22607406136431385
+22
+0.1041057247552285
+32
+1.347444628490924
+13
+0.22607406136431385
+23
+0.1041057247552285
+33
+1.347444628490924
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.23066726183653696
+20
+0.24695009092044307
+30
+0.7851554598356051
+11
+0.2591667482690694
+21
+0.19321003684080962
+31
+0.7326871515023154
+12
+0.37170177284439176
+22
+0.21460211860997003
+32
+0.0
+13
+0.37170177284439176
+23
+0.21460211860997003
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071765
+20
+0.11310260005700845
+30
+1.3448127816824647
+11
+0.22483831324751347
+21
+0.1079802180841335
+31
+1.3469345417672878
+12
+0.22607406136431385
+22
+0.1041057247552285
+32
+1.347444628490924
+13
+0.22607406136431385
+23
+0.1041057247552285
+33
+1.347444628490924
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.274037280744151
+20
+0.15716672872113313
+30
+0.7053101078903244
+11
+0.2902821751225073
+21
+0.10111068285304725
+31
+0.67540282766255
+12
+0.41457945748344094
+22
+0.11108623083122104
+32
+0.0
+13
+0.41457945748344094
+23
+0.11108623083122104
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.0862196570520593
+20
+0.3424202262257874
+30
+1.1068841952682413
+11
+0.09327307500958115
+21
+0.34551182473544184
+31
+1.0731565574038182
+12
+1.7763568394002505e-15
+22
+0.3532598344360507
+32
+1.1068841952682391
+13
+1.7763568394002505e-15
+23
+0.3532598344360507
+33
+1.1068841952682391
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.3532598344360507
+30
+1.1068841952682391
+11
+0.09327307500958115
+21
+0.34551182473544184
+31
+1.0731565574038182
+12
+0.09465568735549401
+22
+0.353259834436051
+32
+1.0122285079127469
+13
+0.09465568735549401
+23
+0.353259834436051
+33
+1.0122285079127469
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.3532598344360507
+30
+1.1068841952682391
+11
+0.09465568735549401
+21
+0.353259834436051
+31
+1.0122285079127469
+12
+1.7763568394002505e-15
+22
+0.365721492087253
+32
+1.0122285079127469
+13
+1.7763568394002505e-15
+23
+0.365721492087253
+33
+1.0122285079127469
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071765
+20
+0.11310260005700845
+30
+1.3448127816824647
+11
+0.21831309401632604
+21
+0.21849744483100497
+31
+1.2976625093750926
+12
+0.19513291276861866
+22
+0.20111681641123635
+32
+1.3083560995869057
+13
+0.19513291276861866
+23
+0.20111681641123635
+33
+1.3083560995869057
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.17310779103353768
+20
+0.29500744201820384
+30
+1.2389543236831635
+11
+0.1648391920368235
+21
+0.309002049823879
+31
+1.2207161957078443
+12
+0.15406334402645439
+22
+0.2950074420182055
+32
+1.238954323683159
+13
+0.15406334402645439
+23
+0.2950074420182055
+33
+1.238954323683159
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.17315837194884964
+20
+0.31485375811798544
+30
+0.8910308472281347
+11
+0.214135315851808
+21
+0.2688995990817393
+31
+0.8155912096632217
+12
+0.30349322665222
+22
+0.303493226652219
+32
+0.0
+13
+0.30349322665222
+23
+0.303493226652219
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.1060148804133424
+20
+0.3464540804912427
+30
+1.0122285079127469
+11
+0.21460211860997136
+21
+0.3717017728443903
+31
+0.0
+12
+0.1110862308312226
+22
+0.4145794574834395
+32
+0.0
+13
+0.1110862308312226
+23
+0.4145794574834395
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.051933324443145024
+20
+0.25432064826909484
+30
+1.270832654993302
+11
+1.7763568394002505e-15
+21
+0.25860414708055923
+31
+1.2708326549933042
+12
+0.03977877210196379
+22
+0.18090139708368969
+32
+1.3289526107702627
+13
+0.03977877210196379
+23
+0.18090139708368969
+33
+1.3289526107702627
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.06777344544969494
+20
+0.30941171298926207
+30
+1.1950892539563756
+11
+0.0862196570520593
+21
+0.3424202262257874
+31
+1.1068841952682413
+12
+1.7763568394002505e-15
+22
+0.31672410285751074
+32
+1.1950892539563733
+13
+1.7763568394002505e-15
+23
+0.31672410285751074
+33
+1.1950892539563733
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.03977877210196379
+20
+0.18090139708368969
+30
+1.3289526107702627
+11
+1.7763568394002505e-15
+21
+0.182860746043627
+31
+1.328952610770256
+12
+0.03213810108186088
+22
+0.09415736007026898
+32
+1.3654883423488011
+13
+0.03213810108186088
+23
+0.09415736007026898
+33
+1.3654883423488011
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.3305275449199734
+30
+0.9357778285299473
+11
+0.14628261733798686
+21
+0.2849026021630544
+31
+0.9336709982866838
+12
+0.14628261733798686
+22
+0.3305275449199734
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.3305275449199734
+33
+0.9336709982866838
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.25860414708055923
+30
+1.2708326549933042
+11
+0.06777344544969494
+21
+0.30941171298926207
+31
+1.1950892539563756
+12
+1.7763568394002505e-15
+22
+0.31672410285751074
+32
+1.1950892539563733
+13
+1.7763568394002505e-15
+23
+0.31672410285751074
+33
+1.1950892539563733
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.25860414708055923
+30
+1.2708326549933042
+11
+0.051933324443145024
+21
+0.25432064826909484
+31
+1.270832654993302
+12
+0.06777344544969494
+22
+0.30941171298926207
+32
+1.1950892539563756
+13
+0.06777344544969494
+23
+0.30941171298926207
+33
+1.1950892539563756
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.03977877210196379
+20
+0.18090139708368969
+30
+1.3289526107702627
+11
+1.7763568394002505e-15
+21
+0.25860414708055923
+31
+1.2708326549933042
+12
+1.7763568394002505e-15
+22
+0.182860746043627
+32
+1.328952610770256
+13
+1.7763568394002505e-15
+23
+0.182860746043627
+33
+1.328952610770256
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.03213810108186088
+20
+0.09415736007026898
+30
+1.3654883423488011
+11
+1.7763568394002505e-15
+21
+0.182860746043627
+31
+1.328952610770256
+12
+1.7763568394002505e-15
+22
+0.09465568735549279
+32
+1.3654883423487965
+13
+1.7763568394002505e-15
+23
+0.09465568735549279
+33
+1.3654883423487965
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.31672410285751074
+30
+1.1950892539563733
+11
+0.0862196570520593
+21
+0.3424202262257874
+31
+1.1068841952682413
+12
+1.7763568394002505e-15
+22
+0.3532598344360507
+32
+1.1068841952682391
+13
+1.7763568394002505e-15
+23
+0.3532598344360507
+33
+1.1068841952682391
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.20151409472026383
+20
+0.06693167840694275
+30
+1.2708326549933064
+11
+0.13856428289474554
+21
+0.09143037302181356
+31
+1.3289526107702583
+12
+0.15114170849065778
+22
+0.04732784367774656
+32
+1.3289526107702583
+13
+0.15114170849065778
+23
+0.04732784367774656
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.13856428289474554
+20
+0.09143037302181356
+30
+1.3289526107702583
+11
+0.20151409472026383
+21
+0.06693167840694275
+31
+1.2708326549933064
+12
+0.18372692886278563
+22
+0.12930207354027978
+32
+1.2708326549933064
+13
+0.18372692886278563
+23
+0.12930207354027978
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+-0.08197422986253194
+21
+0.047327843677746395
+31
+1.3654883423487965
+12
+-0.09143037302181262
+22
+0.024498694614871808
+32
+1.3654883423487965
+13
+-0.09143037302181262
+23
+0.024498694614871808
+33
+1.3654883423487965
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.08597126774640212
+20
+0.04732784367774656
+30
+1.3654883423487987
+11
+0.11855648811852992
+21
+0.12930207354027978
+31
+1.3289526107702583
+12
+0.07561447106922731
+22
+0.06693167840694275
+32
+1.3654883423487987
+13
+0.07561447106922731
+23
+0.06693167840694275
+33
+1.3654883423487987
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.11855648811852992
+20
+0.12930207354027978
+30
+1.3289526107702583
+11
+0.08597126774640212
+21
+0.04732784367774656
+31
+1.3654883423487987
+12
+0.13856428289474554
+22
+0.09143037302181356
+32
+1.3289526107702583
+13
+0.13856428289474554
+23
+0.09143037302181356
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.13856428289474554
+20
+0.09143037302181356
+30
+1.3289526107702583
+11
+0.15543163413708405
+21
+0.1828607460436268
+31
+1.2708326549933064
+12
+0.11855648811852992
+22
+0.12930207354027978
+32
+1.3289526107702583
+13
+0.11855648811852992
+23
+0.12930207354027978
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.15543163413708405
+20
+0.1828607460436268
+30
+1.2708326549933064
+11
+0.13856428289474554
+21
+0.09143037302181356
+31
+1.3289526107702583
+12
+0.18372692886278563
+22
+0.12930207354027978
+32
+1.2708326549933064
+13
+0.18372692886278563
+23
+0.12930207354027978
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.08597126774640212
+20
+0.04732784367774656
+30
+1.3654883423487987
+11
+0.07561447106922731
+21
+0.06693167840694275
+31
+1.3654883423487987
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.07561447106922731
+20
+0.06693167840694275
+30
+1.3654883423487987
+11
+0.06211723085817539
+21
+0.08197422986253433
+31
+1.3654883423487987
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.07561447106922731
+20
+0.06693167840694275
+30
+1.3654883423487987
+11
+0.09248182231156576
+21
+0.1583620514287558
+31
+1.3289526107702583
+12
+0.06211723085817539
+22
+0.08197422986253433
+32
+1.3654883423487987
+13
+0.06211723085817539
+23
+0.08197422986253433
+33
+1.3654883423487987
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.1583620514287558
+30
+1.3289526107702583
+11
+0.07561447106922731
+21
+0.06693167840694275
+31
+1.3654883423487987
+12
+0.11855648811852992
+22
+0.12930207354027978
+32
+1.3289526107702583
+13
+0.11855648811852992
+23
+0.12930207354027978
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.09470245123030319
+20
+3.885780586188048e-16
+30
+1.3654883423487987
+11
+0.09248182231156576
+21
+0.024498694614871863
+31
+1.3654883423487987
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.11855648811852992
+20
+0.12930207354027978
+30
+1.3289526107702583
+11
+0.11855648811852992
+21
+0.22395776089577168
+31
+1.2708326549933064
+12
+0.09248182231156576
+22
+0.1583620514287558
+32
+1.3289526107702583
+13
+0.09248182231156576
+23
+0.1583620514287558
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.11855648811852992
+20
+0.22395776089577168
+30
+1.2708326549933064
+11
+0.11855648811852992
+21
+0.12930207354027978
+31
+1.3289526107702583
+12
+0.15543163413708405
+22
+0.1828607460436268
+32
+1.2708326549933064
+13
+0.15543163413708405
+23
+0.1828607460436268
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.2927773222601686
+30
+1.1435553817691761
+11
+0.13856428289474443
+21
+0.2742911190654399
+31
+1.1950892539563733
+12
+0.14591265330279146
+22
+0.28442212939005906
+32
+1.159696374922908
+13
+0.14591265330279146
+23
+0.28442212939005906
+33
+1.159696374922908
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.09143037302181262
+20
+0.024498694614871808
+30
+1.3654883423487965
+11
+-0.15836205142875398
+21
+0.09143037302181356
+31
+1.328952610770256
+12
+-0.1766299172180231
+22
+0.04732784367774656
+32
+1.328952610770256
+13
+-0.1766299172180231
+23
+0.04732784367774656
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.15836205142875398
+20
+0.09143037302181356
+30
+1.328952610770256
+11
+-0.09143037302181262
+21
+0.024498694614871808
+31
+1.3654883423487965
+12
+-0.08197422986253194
+22
+0.047327843677746395
+32
+1.3654883423487965
+13
+-0.08197422986253194
+23
+0.047327843677746395
+33
+1.3654883423487965
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.06211723085817539
+20
+0.08197422986253433
+30
+1.3654883423487987
+11
+0.04639936172838599
+21
+0.09143037302181423
+31
+1.3654883423487987
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.15836205142875398
+20
+0.09143037302181356
+30
+1.328952610770256
+11
+-0.18286074604362482
+21
+0.18286074604362668
+31
+1.2708326549933042
+12
+-0.22395776089577035
+22
+0.12930207354027978
+32
+1.2708326549933042
+13
+-0.22395776089577035
+23
+0.12930207354027978
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.18286074604362482
+20
+0.18286074604362668
+30
+1.2708326549933042
+11
+-0.15836205142875398
+21
+0.09143037302181356
+31
+1.328952610770256
+12
+-0.12930207354027806
+22
+0.12930207354027967
+32
+1.328952610770256
+13
+-0.12930207354027806
+23
+0.12930207354027967
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.06211723085817539
+20
+0.08197422986253433
+30
+1.3654883423487987
+11
+0.06211723085817539
+21
+0.176629917218026
+31
+1.3289526107702583
+12
+0.04639936172838599
+22
+0.09143037302181423
+32
+1.3654883423487987
+13
+0.04639936172838599
+23
+0.09143037302181423
+33
+1.3654883423487987
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.06211723085817539
+20
+0.176629917218026
+30
+1.3289526107702583
+11
+0.06211723085817539
+21
+0.08197422986253433
+31
+1.3654883423487987
+12
+0.09248182231156576
+22
+0.1583620514287558
+32
+1.3289526107702583
+13
+0.09248182231156576
+23
+0.1583620514287558
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.1766299172180231
+20
+0.04732784367774656
+30
+1.328952610770256
+11
+-0.22395776089577035
+21
+0.12930207354027978
+31
+1.2708326549933042
+12
+-0.24979242445056726
+22
+0.06693167840694259
+32
+1.2708326549933042
+13
+-0.24979242445056726
+23
+0.06693167840694259
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.22395776089577035
+20
+0.12930207354027978
+30
+1.2708326549933042
+11
+-0.1766299172180231
+21
+0.04732784367774656
+31
+1.328952610770256
+12
+-0.15836205142875398
+22
+0.09143037302181356
+32
+1.328952610770256
+13
+-0.15836205142875398
+23
+0.09143037302181356
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.07561447106922731
+20
+0.24979242445056904
+30
+1.2708326549933064
+11
+0.13856428289474443
+21
+0.2742911190654399
+31
+1.1950892539563733
+12
+0.08597126774640101
+22
+0.305931990758305
+32
+1.1950892539563733
+13
+0.08597126774640101
+23
+0.305931990758305
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.13856428289474443
+20
+0.2742911190654399
+30
+1.1950892539563733
+11
+0.07561447106922731
+21
+0.24979242445056904
+31
+1.2708326549933064
+12
+0.11855648811852992
+22
+0.22395776089577168
+32
+1.2708326549933064
+13
+0.11855648811852992
+23
+0.22395776089577168
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.1583620514287558
+30
+1.3289526107702583
+11
+0.07561447106922731
+21
+0.24979242445056904
+31
+1.2708326549933064
+12
+0.06211723085817539
+22
+0.176629917218026
+32
+1.3289526107702583
+13
+0.06211723085817539
+23
+0.176629917218026
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.07561447106922731
+20
+0.24979242445056904
+30
+1.2708326549933064
+11
+0.09248182231156576
+21
+0.1583620514287558
+31
+1.3289526107702583
+12
+0.11855648811852992
+22
+0.22395776089577168
+32
+1.2708326549933064
+13
+0.11855648811852992
+23
+0.22395776089577168
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.18286074604362482
+20
+0.18286074604362668
+30
+1.2708326549933042
+11
+-0.2742911190654381
+21
+0.15836205142875548
+31
+1.1950892539563733
+12
+-0.22395776089577035
+22
+0.12930207354027978
+32
+1.2708326549933042
+13
+-0.22395776089577035
+23
+0.12930207354027978
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.2742911190654381
+20
+0.15836205142875548
+30
+1.1950892539563733
+11
+-0.18286074604362482
+21
+0.18286074604362668
+31
+1.2708326549933042
+12
+-0.22395776089576924
+22
+0.22395776089577124
+32
+1.1950892539563733
+13
+-0.22395776089576924
+23
+0.22395776089577124
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305374
+30
+1.2467080400132249
+11
+0.17760884479078798
+21
+0.2307763099490301
+31
+1.1950892539563756
+12
+0.1907104937441224
+22
+0.2086017627515685
+32
+1.3052557332991035
+13
+0.1907104937441224
+23
+0.2086017627515685
+33
+1.3052557332991035
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.09327307500958115
+20
+0.34551182473544184
+30
+1.0731565574038182
+11
+0.1060148804133424
+21
+0.3464540804912427
+31
+1.0122285079127469
+12
+0.09465568735549401
+22
+0.353259834436051
+32
+1.0122285079127469
+13
+0.09465568735549401
+23
+0.353259834436051
+33
+1.0122285079127469
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.22395776089576924
+20
+0.22395776089577124
+30
+1.1950892539563733
+11
+-0.3059319907583018
+21
+0.17662991721802546
+31
+1.1068841952682391
+12
+-0.2742911190654381
+22
+0.15836205142875548
+32
+1.1950892539563733
+13
+-0.2742911190654381
+23
+0.15836205142875548
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3059319907583018
+20
+0.17662991721802546
+30
+1.1068841952682391
+11
+-0.22395776089576924
+21
+0.22395776089577124
+31
+1.1950892539563733
+12
+-0.24979242445056726
+22
+0.24979242445056848
+32
+1.1068841952682391
+13
+-0.24979242445056726
+23
+0.24979242445056848
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.08197422986253194
+20
+0.047327843677746395
+30
+1.3654883423487965
+11
+-0.12930207354027806
+21
+0.12930207354027967
+31
+1.328952610770256
+12
+-0.15836205142875398
+22
+0.09143037302181356
+32
+1.328952610770256
+13
+-0.15836205142875398
+23
+0.09143037302181356
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.12930207354027806
+20
+0.12930207354027967
+30
+1.328952610770256
+11
+-0.08197422986253194
+21
+0.047327843677746395
+31
+1.3654883423487965
+12
+-0.0669316784069407
+22
+0.06693167840694259
+32
+1.3654883423487965
+13
+-0.0669316784069407
+23
+0.06693167840694259
+33
+1.3654883423487965
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.03213810108186088
+20
+0.09415736007026898
+30
+1.3654883423488011
+11
+1.7763568394002505e-15
+21
+0.09465568735549279
+31
+1.3654883423487965
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+1.7763568394002505e-15
+21
+0.09465568735549279
+31
+1.3654883423487965
+12
+-0.024498694614870198
+22
+0.09143037302181412
+32
+1.3654883423487965
+13
+-0.024498694614870198
+23
+0.09143037302181412
+33
+1.3654883423487965
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.22395776089577035
+20
+0.12930207354027978
+30
+1.2708326549933042
+11
+-0.3059319907583018
+21
+0.081974229862534
+31
+1.1950892539563733
+12
+-0.24979242445056726
+22
+0.06693167840694259
+32
+1.2708326549933042
+13
+-0.24979242445056726
+23
+0.06693167840694259
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3059319907583018
+20
+0.081974229862534
+30
+1.1950892539563733
+11
+-0.22395776089577035
+21
+0.12930207354027978
+31
+1.2708326549933042
+12
+-0.2742911190654381
+22
+0.15836205142875548
+32
+1.1950892539563733
+13
+-0.2742911190654381
+23
+0.15836205142875548
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.024498694614870198
+20
+0.09143037302181412
+30
+1.3654883423487965
+11
+1.7763568394002505e-15
+21
+0.182860746043627
+31
+1.328952610770256
+12
+-0.04732784367774434
+22
+0.1766299172180259
+32
+1.328952610770256
+13
+-0.04732784367774434
+23
+0.1766299172180259
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.182860746043627
+30
+1.328952610770256
+11
+-0.024498694614870198
+21
+0.09143037302181412
+31
+1.3654883423487965
+12
+1.7763568394002505e-15
+22
+0.09465568735549279
+32
+1.3654883423487965
+13
+1.7763568394002505e-15
+23
+0.09465568735549279
+33
+1.3654883423487965
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.04732784367774434
+20
+0.1766299172180259
+30
+1.328952610770256
+11
+1.7763568394002505e-15
+21
+0.25860414708055923
+31
+1.2708326549933042
+12
+-0.06693167840693953
+22
+0.24979242445056893
+32
+1.2708326549933042
+13
+-0.06693167840693953
+23
+0.24979242445056893
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.25860414708055923
+30
+1.2708326549933042
+11
+-0.04732784367774434
+21
+0.1766299172180259
+31
+1.328952610770256
+12
+1.7763568394002505e-15
+22
+0.182860746043627
+32
+1.328952610770256
+13
+1.7763568394002505e-15
+23
+0.182860746043627
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.06693167840693953
+20
+0.24979242445056893
+30
+1.2708326549933042
+11
+1.7763568394002505e-15
+21
+0.31672410285751074
+31
+1.1950892539563733
+12
+-0.08197422986253078
+22
+0.3059319907583048
+32
+1.1950892539563733
+13
+-0.08197422986253078
+23
+0.3059319907583048
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.31672410285751074
+30
+1.1950892539563733
+11
+-0.06693167840693953
+21
+0.24979242445056893
+31
+1.2708326549933042
+12
+1.7763568394002505e-15
+22
+0.25860414708055923
+32
+1.2708326549933042
+13
+1.7763568394002505e-15
+23
+0.25860414708055923
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.08197422986253078
+20
+0.3059319907583048
+30
+1.1950892539563733
+11
+1.7763568394002505e-15
+21
+0.3532598344360507
+31
+1.1068841952682391
+12
+-0.0914303730218115
+22
+0.3412227974723816
+32
+1.1068841952682391
+13
+-0.0914303730218115
+23
+0.3412227974723816
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.3532598344360507
+30
+1.1068841952682391
+11
+-0.08197422986253078
+21
+0.3059319907583048
+31
+1.1950892539563733
+12
+1.7763568394002505e-15
+22
+0.31672410285751074
+32
+1.1950892539563733
+13
+1.7763568394002505e-15
+23
+0.31672410285751074
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.0914303730218115
+20
+0.3412227974723816
+30
+1.1068841952682391
+11
+1.7763568394002505e-15
+21
+0.365721492087253
+31
+1.0122285079127469
+12
+-0.09465568735549051
+22
+0.3532598344360508
+32
+1.0122285079127469
+13
+-0.09465568735549051
+23
+0.3532598344360508
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.365721492087253
+30
+1.0122285079127469
+11
+-0.0914303730218115
+21
+0.3412227974723816
+31
+1.1068841952682391
+12
+1.7763568394002505e-15
+22
+0.3532598344360507
+32
+1.1068841952682391
+13
+1.7763568394002505e-15
+23
+0.3532598344360507
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.2742911190654381
+20
+0.15836205142875548
+30
+1.1950892539563733
+11
+-0.34122279747237944
+21
+0.09143037302181367
+31
+1.1068841952682391
+12
+-0.3059319907583018
+22
+0.081974229862534
+32
+1.1950892539563733
+13
+-0.3059319907583018
+23
+0.081974229862534
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.34122279747237944
+20
+0.09143037302181367
+30
+1.1068841952682391
+11
+-0.2742911190654381
+21
+0.15836205142875548
+31
+1.1950892539563733
+12
+-0.3059319907583018
+22
+0.17662991721802546
+32
+1.1068841952682391
+13
+-0.3059319907583018
+23
+0.17662991721802546
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.024498694614871863
+30
+1.3654883423487987
+11
+0.08597126774640212
+21
+0.04732784367774656
+31
+1.3654883423487987
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.24979242445056726
+20
+0.24979242445056848
+30
+1.1068841952682391
+11
+-0.3167241028575086
+21
+0.18286074604362668
+31
+1.0122285079127469
+12
+-0.3059319907583018
+22
+0.17662991721802546
+32
+1.1068841952682391
+13
+-0.3059319907583018
+23
+0.17662991721802546
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3167241028575086
+20
+0.18286074604362668
+30
+1.0122285079127469
+11
+-0.24979242445056726
+21
+0.24979242445056848
+31
+1.1068841952682391
+12
+-0.2586041470805568
+22
+0.2586041470805588
+32
+1.0122285079127469
+13
+-0.2586041470805568
+23
+0.2586041470805588
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.15836205142875287
+20
+0.27429111906544
+30
+1.1950892539563733
+11
+-0.0914303730218115
+21
+0.3412227974723816
+31
+1.1068841952682391
+12
+-0.1766299172180231
+22
+0.305931990758305
+32
+1.1068841952682391
+13
+-0.1766299172180231
+23
+0.305931990758305
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.0914303730218115
+20
+0.3412227974723816
+30
+1.1068841952682391
+11
+-0.15836205142875287
+21
+0.27429111906544
+31
+1.1950892539563733
+12
+-0.08197422986253078
+22
+0.3059319907583048
+32
+1.1950892539563733
+13
+-0.08197422986253078
+23
+0.3059319907583048
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.1766299172180231
+20
+0.305931990758305
+30
+1.1068841952682391
+11
+-0.09465568735549051
+21
+0.3532598344360508
+31
+1.0122285079127469
+12
+-0.1828607460436237
+22
+0.31672410285751096
+32
+1.0122285079127469
+13
+-0.1828607460436237
+23
+0.31672410285751096
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.09465568735549051
+20
+0.3532598344360508
+30
+1.0122285079127469
+11
+-0.1766299172180231
+21
+0.305931990758305
+31
+1.1068841952682391
+12
+-0.0914303730218115
+22
+0.3412227974723816
+32
+1.1068841952682391
+13
+-0.0914303730218115
+23
+0.3412227974723816
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+-0.024498694614870198
+21
+0.09143037302181412
+31
+1.3654883423487965
+12
+-0.04732784367774434
+22
+0.08197422986253444
+32
+1.3654883423487965
+13
+-0.04732784367774434
+23
+0.08197422986253444
+33
+1.3654883423487965
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.04732784367774434
+20
+0.08197422986253444
+30
+1.3654883423487965
+11
+-0.04732784367774434
+21
+0.1766299172180259
+31
+1.328952610770256
+12
+-0.0914303730218115
+22
+0.15836205142875603
+32
+1.328952610770256
+13
+-0.0914303730218115
+23
+0.15836205142875603
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.04732784367774434
+20
+0.1766299172180259
+30
+1.328952610770256
+11
+-0.04732784367774434
+21
+0.08197422986253444
+31
+1.3654883423487965
+12
+-0.024498694614870198
+22
+0.09143037302181412
+32
+1.3654883423487965
+13
+-0.024498694614870198
+23
+0.09143037302181412
+33
+1.3654883423487965
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.0914303730218115
+20
+0.15836205142875603
+30
+1.328952610770256
+11
+-0.06693167840693953
+21
+0.24979242445056893
+31
+1.2708326549933042
+12
+-0.12930207354027695
+22
+0.2239577608957718
+32
+1.2708326549933042
+13
+-0.12930207354027695
+23
+0.2239577608957718
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.06693167840693953
+20
+0.24979242445056893
+30
+1.2708326549933042
+11
+-0.0914303730218115
+21
+0.15836205142875603
+31
+1.328952610770256
+12
+-0.04732784367774434
+22
+0.1766299172180259
+32
+1.328952610770256
+13
+-0.04732784367774434
+23
+0.1766299172180259
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+-0.04732784367774434
+21
+0.08197422986253444
+31
+1.3654883423487965
+12
+-0.0669316784069407
+22
+0.06693167840694259
+32
+1.3654883423487965
+13
+-0.0669316784069407
+23
+0.06693167840694259
+33
+1.3654883423487965
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.12930207354027695
+20
+0.2239577608957718
+30
+1.2708326549933042
+11
+-0.08197422986253078
+21
+0.3059319907583048
+31
+1.1950892539563733
+12
+-0.15836205142875287
+22
+0.27429111906544
+32
+1.1950892539563733
+13
+-0.15836205142875287
+23
+0.27429111906544
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.08197422986253078
+20
+0.3059319907583048
+30
+1.1950892539563733
+11
+-0.12930207354027695
+21
+0.2239577608957718
+31
+1.2708326549933042
+12
+-0.06693167840693953
+22
+0.24979242445056893
+32
+1.2708326549933042
+13
+-0.06693167840693953
+23
+0.24979242445056893
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.24979242445056726
+20
+0.06693167840694259
+30
+1.2708326549933042
+11
+-0.3167241028575086
+21
+3.885780586188048e-16
+31
+1.1950892539563733
+12
+-0.2586041470805568
+22
+3.885780586188048e-16
+32
+1.2708326549933042
+13
+-0.2586041470805568
+23
+3.885780586188048e-16
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3167241028575086
+20
+3.885780586188048e-16
+30
+1.1950892539563733
+11
+-0.24979242445056726
+21
+0.06693167840694259
+31
+1.2708326549933042
+12
+-0.3059319907583018
+22
+0.081974229862534
+32
+1.1950892539563733
+13
+-0.3059319907583018
+23
+0.081974229862534
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.0669316784069407
+20
+0.06693167840694259
+30
+1.3654883423487965
+11
+-0.0914303730218115
+21
+0.15836205142875603
+31
+1.328952610770256
+12
+-0.12930207354027806
+22
+0.12930207354027967
+32
+1.328952610770256
+13
+-0.12930207354027806
+23
+0.12930207354027967
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.0914303730218115
+20
+0.15836205142875603
+30
+1.328952610770256
+11
+-0.0669316784069407
+21
+0.06693167840694259
+31
+1.3654883423487965
+12
+-0.04732784367774434
+22
+0.08197422986253444
+32
+1.3654883423487965
+13
+-0.04732784367774434
+23
+0.08197422986253444
+33
+1.3654883423487965
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.024498694614871863
+30
+1.3654883423487987
+11
+0.13856428289474554
+21
+0.09143037302181356
+31
+1.3289526107702583
+12
+0.08597126774640212
+22
+0.04732784367774656
+32
+1.3654883423487987
+13
+0.08597126774640212
+23
+0.04732784367774656
+33
+1.3654883423487987
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.13856428289474554
+20
+0.09143037302181356
+30
+1.3289526107702583
+11
+0.09248182231156576
+21
+0.024498694614871863
+31
+1.3654883423487987
+12
+0.15114170849065778
+22
+0.04732784367774656
+32
+1.3289526107702583
+13
+0.15114170849065778
+23
+0.04732784367774656
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.12930207354027806
+20
+0.12930207354027967
+30
+1.328952610770256
+11
+-0.12930207354027695
+21
+0.2239577608957718
+31
+1.2708326549933042
+12
+-0.18286074604362482
+22
+0.18286074604362668
+32
+1.2708326549933042
+13
+-0.18286074604362482
+23
+0.18286074604362668
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.12930207354027695
+20
+0.2239577608957718
+30
+1.2708326549933042
+11
+-0.12930207354027806
+21
+0.12930207354027967
+31
+1.328952610770256
+12
+-0.0914303730218115
+22
+0.15836205142875603
+32
+1.328952610770256
+13
+-0.0914303730218115
+23
+0.15836205142875603
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.18286074604362482
+20
+0.18286074604362668
+30
+1.2708326549933042
+11
+-0.15836205142875287
+21
+0.27429111906544
+31
+1.1950892539563733
+12
+-0.22395776089576924
+22
+0.22395776089577124
+32
+1.1950892539563733
+13
+-0.22395776089576924
+23
+0.22395776089577124
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.15836205142875287
+20
+0.27429111906544
+30
+1.1950892539563733
+11
+-0.18286074604362482
+21
+0.18286074604362668
+31
+1.2708326549933042
+12
+-0.12930207354027695
+22
+0.2239577608957718
+32
+1.2708326549933042
+13
+-0.12930207354027695
+23
+0.2239577608957718
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.22395776089576924
+20
+0.22395776089577124
+30
+1.1950892539563733
+11
+-0.1766299172180231
+21
+0.305931990758305
+31
+1.1068841952682391
+12
+-0.24979242445056726
+22
+0.24979242445056848
+32
+1.1068841952682391
+13
+-0.24979242445056726
+23
+0.24979242445056848
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.1766299172180231
+20
+0.305931990758305
+30
+1.1068841952682391
+11
+-0.22395776089576924
+21
+0.22395776089577124
+31
+1.1950892539563733
+12
+-0.15836205142875287
+22
+0.27429111906544
+32
+1.1950892539563733
+13
+-0.15836205142875287
+23
+0.27429111906544
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+-0.0669316784069407
+21
+0.06693167840694259
+31
+1.3654883423487965
+12
+-0.08197422986253194
+22
+0.047327843677746395
+32
+1.3654883423487965
+13
+-0.08197422986253194
+23
+0.047327843677746395
+33
+1.3654883423487965
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.24979242445056726
+20
+0.24979242445056848
+30
+1.1068841952682391
+11
+-0.1828607460436237
+21
+0.31672410285751096
+31
+1.0122285079127469
+12
+-0.2586041470805568
+22
+0.2586041470805588
+32
+1.0122285079127469
+13
+-0.2586041470805568
+23
+0.2586041470805588
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.1828607460436237
+20
+0.31672410285751096
+30
+1.0122285079127469
+11
+-0.24979242445056726
+21
+0.24979242445056848
+31
+1.1068841952682391
+12
+-0.1766299172180231
+22
+0.305931990758305
+32
+1.1068841952682391
+13
+-0.1766299172180231
+23
+0.305931990758305
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.20151409472026383
+20
+0.06693167840694275
+30
+1.2708326549933064
+11
+0.15543163413708405
+21
+3.885780586188048e-16
+31
+1.3289526107702583
+12
+0.20758096575101137
+22
+2.7755575615628914e-16
+32
+1.2708326549933064
+13
+0.20758096575101137
+23
+2.7755575615628914e-16
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.15543163413708405
+20
+3.885780586188048e-16
+30
+1.3289526107702583
+11
+0.20151409472026383
+21
+0.06693167840694275
+31
+1.2708326549933064
+12
+0.15114170849065778
+22
+0.04732784367774656
+32
+1.3289526107702583
+13
+0.15114170849065778
+23
+0.04732784367774656
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3059319907583018
+20
+0.17662991721802546
+30
+1.1068841952682391
+11
+-0.3532598344360491
+21
+0.09465568735549246
+31
+1.0122285079127469
+12
+-0.34122279747237944
+22
+0.09143037302181367
+32
+1.1068841952682391
+13
+-0.34122279747237944
+23
+0.09143037302181367
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3532598344360491
+20
+0.09465568735549246
+30
+1.0122285079127469
+11
+-0.3059319907583018
+21
+0.17662991721802546
+31
+1.1068841952682391
+12
+-0.3167241028575086
+22
+0.18286074604362668
+32
+1.0122285079127469
+13
+-0.3167241028575086
+23
+0.18286074604362668
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+-0.09143037302181262
+21
+0.024498694614871808
+31
+1.3654883423487965
+12
+-0.09465568735549051
+22
+3.3306690738754696e-16
+32
+1.3654883423487965
+13
+-0.09465568735549051
+23
+3.3306690738754696e-16
+33
+1.3654883423487965
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.09465568735549051
+20
+3.3306690738754696e-16
+30
+1.3654883423487965
+11
+-0.1766299172180231
+21
+0.04732784367774656
+31
+1.328952610770256
+12
+-0.18286074604362482
+22
+3.885780586188048e-16
+32
+1.328952610770256
+13
+-0.18286074604362482
+23
+3.885780586188048e-16
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.1766299172180231
+20
+0.04732784367774656
+30
+1.328952610770256
+11
+-0.09465568735549051
+21
+3.3306690738754696e-16
+31
+1.3654883423487965
+12
+-0.09143037302181262
+22
+0.024498694614871808
+32
+1.3654883423487965
+13
+-0.09143037302181262
+23
+0.024498694614871808
+33
+1.3654883423487965
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.18286074604362482
+20
+3.885780586188048e-16
+30
+1.328952610770256
+11
+-0.24979242445056726
+21
+0.06693167840694259
+31
+1.2708326549933042
+12
+-0.2586041470805568
+22
+3.885780586188048e-16
+32
+1.2708326549933042
+13
+-0.2586041470805568
+23
+3.885780586188048e-16
+33
+1.2708326549933042
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.24979242445056726
+20
+0.06693167840694259
+30
+1.2708326549933042
+11
+-0.18286074604362482
+21
+3.885780586188048e-16
+31
+1.328952610770256
+12
+-0.1766299172180231
+22
+0.04732784367774656
+32
+1.328952610770256
+13
+-0.1766299172180231
+23
+0.04732784367774656
+33
+1.328952610770256
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3059319907583018
+20
+0.081974229862534
+30
+1.1950892539563733
+11
+-0.3532598344360491
+21
+3.885780586188048e-16
+31
+1.1068841952682391
+12
+-0.3167241028575086
+22
+3.885780586188048e-16
+32
+1.1950892539563733
+13
+-0.3167241028575086
+23
+3.885780586188048e-16
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3532598344360491
+20
+3.885780586188048e-16
+30
+1.1068841952682391
+11
+-0.3059319907583018
+21
+0.081974229862534
+31
+1.1950892539563733
+12
+-0.34122279747237944
+22
+0.09143037302181367
+32
+1.1068841952682391
+13
+-0.34122279747237944
+23
+0.09143037302181367
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.34122279747237944
+20
+0.09143037302181367
+30
+1.1068841952682391
+11
+-0.3657214920872503
+21
+3.885780586188048e-16
+31
+1.0122285079127469
+12
+-0.3532598344360491
+22
+3.885780586188048e-16
+32
+1.1068841952682391
+13
+-0.3532598344360491
+23
+3.885780586188048e-16
+33
+1.1068841952682391
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3657214920872503
+20
+3.885780586188048e-16
+30
+1.0122285079127469
+11
+-0.34122279747237944
+21
+0.09143037302181367
+31
+1.1068841952682391
+12
+-0.3532598344360491
+22
+0.09465568735549246
+32
+1.0122285079127469
+13
+-0.3532598344360491
+23
+0.09465568735549246
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.09470245123030319
+20
+3.885780586188048e-16
+30
+1.3654883423487987
+11
+0.15114170849065778
+21
+0.04732784367774656
+31
+1.3289526107702583
+12
+0.09248182231156576
+22
+0.024498694614871863
+32
+1.3654883423487987
+13
+0.09248182231156576
+23
+0.024498694614871863
+33
+1.3654883423487987
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.15114170849065778
+20
+0.04732784367774656
+30
+1.3289526107702583
+11
+0.09470245123030319
+21
+3.885780586188048e-16
+31
+1.3654883423487987
+12
+0.15543163413708405
+22
+3.885780586188048e-16
+32
+1.3289526107702583
+13
+0.15543163413708405
+23
+3.885780586188048e-16
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.06211723085817539
+20
+0.176629917218026
+30
+1.3289526107702583
+11
+0.051933324443145024
+21
+0.25432064826909484
+31
+1.270832654993302
+12
+0.03977877210196379
+22
+0.18090139708368969
+32
+1.3289526107702627
+13
+0.03977877210196379
+23
+0.18090139708368969
+33
+1.3289526107702627
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.051933324443145024
+20
+0.25432064826909484
+30
+1.270832654993302
+11
+0.06211723085817539
+21
+0.176629917218026
+31
+1.3289526107702583
+12
+0.07561447106922731
+22
+0.24979242445056904
+32
+1.2708326549933064
+13
+0.07561447106922731
+23
+0.24979242445056904
+33
+1.2708326549933064
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.06777344544969494
+20
+0.30941171298926207
+30
+1.1950892539563756
+11
+0.09248182231156576
+21
+0.34122279747238193
+31
+1.1068841952682413
+12
+0.0862196570520593
+22
+0.3424202262257874
+32
+1.1068841952682413
+13
+0.0862196570520593
+23
+0.3424202262257874
+33
+1.1068841952682413
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.34122279747238193
+30
+1.1068841952682413
+11
+0.06777344544969494
+21
+0.30941171298926207
+31
+1.1950892539563756
+12
+0.08597126774640101
+22
+0.305931990758305
+32
+1.1950892539563733
+13
+0.08597126774640101
+23
+0.305931990758305
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.1060148804133424
+20
+0.3464540804912427
+30
+1.0122285079127469
+11
+0.1110862308312226
+21
+0.4145794574834395
+31
+0.0
+12
+0.09465568735549401
+22
+0.353259834436051
+32
+1.0122285079127469
+13
+0.09465568735549401
+23
+0.353259834436051
+33
+1.0122285079127469
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.06777344544969494
+20
+0.30941171298926207
+30
+1.1950892539563756
+11
+0.07561447106922731
+21
+0.24979242445056904
+31
+1.2708326549933064
+12
+0.08597126774640101
+22
+0.305931990758305
+32
+1.1950892539563733
+13
+0.08597126774640101
+23
+0.305931990758305
+33
+1.1950892539563733
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.07561447106922731
+20
+0.24979242445056904
+30
+1.2708326549933064
+11
+0.06777344544969494
+21
+0.30941171298926207
+31
+1.1950892539563756
+12
+0.051933324443145024
+22
+0.25432064826909484
+32
+1.270832654993302
+13
+0.051933324443145024
+23
+0.25432064826909484
+33
+1.270832654993302
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.16148066621521584
+20
+0.30464032797763685
+30
+0.9121263906088999
+11
+0.14628261733798686
+21
+0.3305275449199734
+31
+0.9336709982866838
+12
+0.14628261733798686
+22
+0.2849026021630544
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.2849026021630544
+33
+0.9336709982866838
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.3305275449199734
+30
+0.9336709982866838
+11
+0.16148066621521584
+21
+0.30464032797763685
+31
+0.9121263906088999
+12
+0.1624333997344558
+22
+0.32322972405982175
+32
+0.9107758047501918
+13
+0.1624333997344558
+23
+0.32322972405982175
+33
+0.9107758047501918
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.04639936172838599
+20
+0.09143037302181423
+30
+1.3654883423487987
+11
+0.03977877210196379
+21
+0.18090139708368969
+31
+1.3289526107702627
+12
+0.03213810108186088
+22
+0.09415736007026898
+32
+1.3654883423488011
+13
+0.03213810108186088
+23
+0.09415736007026898
+33
+1.3654883423488011
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.03977877210196379
+20
+0.18090139708368969
+30
+1.3289526107702627
+11
+0.04639936172838599
+21
+0.09143037302181423
+31
+1.3654883423487987
+12
+0.06211723085817539
+22
+0.176629917218026
+32
+1.3289526107702583
+13
+0.06211723085817539
+23
+0.176629917218026
+33
+1.3289526107702583
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.04639936172838599
+20
+0.09143037302181423
+30
+1.3654883423487987
+11
+0.03213810108186088
+21
+0.09415736007026898
+31
+1.3654883423488011
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.34122279747238193
+30
+1.1068841952682413
+11
+0.09327307500958115
+21
+0.34551182473544184
+31
+1.0731565574038182
+12
+0.0862196570520593
+22
+0.3424202262257874
+32
+1.1068841952682413
+13
+0.0862196570520593
+23
+0.3424202262257874
+33
+1.1068841952682413
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.23066726183653696
+20
+0.24695009092044307
+30
+0.7851554598356051
+11
+0.21831309401632715
+21
+0.21849744483100653
+31
+0.8070247740079369
+12
+0.21954103663658775
+22
+0.21464742440548745
+32
+0.8047207977789652
+13
+0.21954103663658775
+23
+0.21464742440548745
+33
+0.8047207977789652
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632715
+20
+0.21849744483100653
+30
+0.8070247740079369
+11
+0.23066726183653696
+21
+0.24695009092044307
+31
+0.7851554598356051
+12
+0.20642658047224793
+22
+0.2386153747599219
+32
+0.8289927497633759
+13
+0.20642658047224793
+23
+0.2386153747599219
+33
+0.8289927497633759
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.20642658047224793
+20
+0.2386153747599219
+30
+0.8289927497633759
+11
+0.23066726183653696
+21
+0.24695009092044307
+31
+0.7851554598356051
+12
+0.214135315851808
+22
+0.2688995990817393
+32
+0.8155912096632217
+13
+0.214135315851808
+23
+0.2688995990817393
+33
+0.8155912096632217
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305374
+30
+1.2467080400132249
+11
+0.14591265330279146
+21
+0.28442212939005906
+31
+1.159696374922908
+12
+0.13856428289474443
+22
+0.2742911190654399
+32
+1.1950892539563733
+13
+0.13856428289474443
+23
+0.2742911190654399
+33
+1.1950892539563733
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.41457945748344094
+20
+0.11108623083122104
+30
+0.0
+11
+0.2902821751225073
+21
+0.10111068285304725
+31
+0.67540282766255
+12
+0.296250080065389
+22
+0.05625570433824323
+32
+0.6644157568117056
+13
+0.296250080065389
+23
+0.05625570433824323
+33
+0.6644157568117056
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.1624333997344558
+20
+0.32322972405982175
+30
+0.9107758047501918
+11
+0.17315837194884964
+21
+0.31485375811798544
+31
+0.8910308472281347
+12
+0.30349322665222
+22
+0.303493226652219
+32
+0.0
+13
+0.30349322665222
+23
+0.303493226652219
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305374
+30
+1.2467080400132249
+11
+0.14628261733798686
+21
+0.28490260216305396
+31
+1.0876716112414513
+12
+0.14591265330279146
+22
+0.28442212939005906
+32
+1.159696374922908
+13
+0.14591265330279146
+23
+0.28442212939005906
+33
+1.159696374922908
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305396
+30
+1.0876716112414513
+11
+0.14628261733798686
+21
+0.28490260216305374
+31
+1.2467080400132249
+12
+0.15406334402645439
+22
+0.2950074420182055
+32
+1.238954323683159
+13
+0.15406334402645439
+23
+0.2950074420182055
+33
+1.238954323683159
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305396
+30
+1.0876716112414513
+11
+0.15406334402645439
+21
+0.2950074420182055
+31
+1.238954323683159
+12
+0.14628261733798686
+22
+0.2849026021630544
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.2849026021630544
+33
+0.9336709982866838
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.2849026021630544
+30
+0.9336709982866838
+11
+0.15406334402645439
+21
+0.2950074420182055
+31
+1.238954323683159
+12
+0.16148066621521584
+22
+0.30464032797763685
+32
+0.9121263906088999
+13
+0.16148066621521584
+23
+0.30464032797763685
+33
+0.9121263906088999
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.16148066621521584
+20
+0.30464032797763685
+30
+0.9121263906088999
+11
+0.15406334402645439
+21
+0.2950074420182055
+31
+1.238954323683159
+12
+0.1648391920368235
+22
+0.309002049823879
+32
+1.2207161957078443
+13
+0.1648391920368235
+23
+0.309002049823879
+33
+1.2207161957078443
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.16148066621521584
+20
+0.30464032797763685
+30
+0.9121263906088999
+11
+0.1648391920368235
+21
+0.309002049823879
+31
+1.2207161957078443
+12
+0.16483919203682462
+22
+0.3090020498238778
+32
+0.9060890011061947
+13
+0.16483919203682462
+23
+0.3090020498238778
+33
+0.9060890011061947
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.37170177284439176
+20
+0.21460211860997003
+30
+0.0
+11
+0.2591667482690694
+21
+0.19321003684080962
+31
+0.7326871515023154
+12
+0.274037280744151
+22
+0.15716672872113313
+32
+0.7053101078903244
+13
+0.274037280744151
+23
+0.15716672872113313
+33
+0.7053101078903244
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305374
+30
+1.2467080400132249
+11
+0.13856428289474443
+21
+0.2742911190654399
+31
+1.1950892539563733
+12
+0.17760884479078798
+22
+0.2307763099490301
+32
+1.1950892539563756
+13
+0.17760884479078798
+23
+0.2307763099490301
+33
+1.1950892539563756
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.37170177284439176
+20
+0.21460211860997003
+30
+0.0
+11
+0.274037280744151
+21
+0.15716672872113313
+31
+0.7053101078903244
+12
+0.41457945748344094
+22
+0.11108623083122104
+32
+0.0
+13
+0.41457945748344094
+23
+0.11108623083122104
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.30349322665222
+20
+0.303493226652219
+30
+0.0
+11
+0.214135315851808
+21
+0.2688995990817393
+31
+0.8155912096632217
+12
+0.23066726183653696
+22
+0.24695009092044307
+32
+0.7851554598356051
+13
+0.23066726183653696
+23
+0.24695009092044307
+33
+0.7851554598356051
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.1624333997344558
+20
+0.32322972405982175
+30
+0.9107758047501918
+11
+0.30349322665222
+21
+0.303493226652219
+31
+0.0
+12
+0.21460211860997136
+22
+0.3717017728443903
+32
+0.0
+13
+0.21460211860997136
+23
+0.3717017728443903
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.30349322665222
+20
+0.303493226652219
+30
+0.0
+11
+0.23066726183653696
+21
+0.24695009092044307
+31
+0.7851554598356051
+12
+0.37170177284439176
+22
+0.21460211860997003
+32
+0.0
+13
+0.37170177284439176
+23
+0.21460211860997003
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.41457945748344094
+20
+0.11108623083122104
+30
+0.0
+11
+0.296250080065389
+21
+0.05625570433824323
+31
+0.6644157568117056
+12
+0.42920423721993983
+22
+2.7755575615628914e-15
+32
+0.0
+13
+0.42920423721993983
+23
+2.7755575615628914e-15
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.3305275449199734
+30
+0.9357778285299473
+11
+0.14591265330279257
+21
+0.30907788121177326
+31
+1.1068841952682413
+12
+0.14628261733798686
+22
+0.2849026021630544
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.2849026021630544
+33
+0.9336709982866838
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.30907788121177326
+30
+1.1068841952682413
+11
+0.14591265330279257
+21
+0.3305275449199734
+31
+0.9357778285299473
+12
+0.14591265330279257
+22
+0.3224508871153656
+32
+1.0122285079127469
+13
+0.14591265330279257
+23
+0.3224508871153656
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.30907788121177326
+30
+1.1068841952682413
+11
+0.14628261733798686
+21
+0.28490260216305396
+31
+1.0876716112414513
+12
+0.14628261733798686
+22
+0.2849026021630544
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.2849026021630544
+33
+0.9336709982866838
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.3305275449199734
+30
+0.9336709982866838
+11
+0.1624333997344558
+21
+0.32322972405982175
+31
+0.9107758047501918
+12
+0.21460211860997136
+22
+0.3717017728443903
+32
+0.0
+13
+0.21460211860997136
+23
+0.3717017728443903
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.1060148804133424
+20
+0.3464540804912427
+30
+1.0122285079127469
+11
+0.14628261733798686
+21
+0.3305275449199734
+31
+0.9336709982866838
+12
+0.21460211860997136
+22
+0.3717017728443903
+32
+0.0
+13
+0.21460211860997136
+23
+0.3717017728443903
+33
+0.0
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.1060148804133424
+20
+0.3464540804912427
+30
+1.0122285079127469
+11
+0.14591265330279257
+21
+0.3305275449199734
+31
+0.9357778285299473
+12
+0.14628261733798686
+22
+0.3305275449199734
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.3305275449199734
+33
+0.9336709982866838
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.3305275449199734
+30
+0.9357778285299473
+11
+0.1060148804133424
+21
+0.3464540804912427
+31
+1.0122285079127469
+12
+0.14591265330279257
+22
+0.3224508871153656
+32
+1.0122285079127469
+13
+0.14591265330279257
+23
+0.3224508871153656
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.2586041470805568
+20
+0.2586041470805588
+30
+1.0122285079127469
+11
+-0.35104895415806886
+21
+0.20267820818189808
+31
+0.3510489541580695
+12
+-0.3167241028575086
+22
+0.18286074604362668
+32
+1.0122285079127469
+13
+-0.3167241028575086
+23
+0.18286074604362668
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.35104895415806886
+20
+0.20267820818189808
+30
+0.3510489541580695
+11
+-0.2586041470805568
+21
+0.2586041470805588
+31
+1.0122285079127469
+12
+-0.34136914729025525
+22
+0.2162382106052272
+32
+0.3413691472902548
+13
+-0.34136914729025525
+23
+0.2162382106052272
+33
+0.3413691472902548
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.2586041470805568
+20
+0.2586041470805588
+30
+1.0122285079127469
+11
+-0.31956463959574843
+21
+0.24729676227526276
+31
+0.319564639595748
+12
+-0.34136914729025525
+22
+0.2162382106052272
+32
+0.3413691472902548
+13
+-0.34136914729025525
+23
+0.2162382106052272
+33
+0.3413691472902548
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.31956463959574843
+20
+0.24729676227526276
+30
+0.319564639595748
+11
+-0.2586041470805568
+21
+0.2586041470805588
+31
+1.0122285079127469
+12
+-0.28975619668604413
+22
+0.28975619668604524
+32
+0.2897561966860459
+13
+-0.28975619668604413
+23
+0.28975619668604524
+33
+0.2897561966860459
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3167241028575086
+20
+0.18286074604362668
+30
+1.0122285079127469
+11
+-0.38891611994706954
+21
+0.10420976026326378
+31
+0.3889161199470702
+12
+-0.3532598344360491
+22
+0.09465568735549246
+32
+1.0122285079127469
+13
+-0.3532598344360491
+23
+0.09465568735549246
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.38891611994706954
+20
+0.10420976026326378
+30
+0.3889161199470702
+11
+-0.3167241028575086
+21
+0.18286074604362668
+31
+1.0122285079127469
+12
+-0.3824872047423873
+22
+0.12071693477296785
+32
+0.38248720474238906
+13
+-0.3824872047423873
+23
+0.12071693477296785
+33
+0.38248720474238906
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.35104895415806886
+20
+0.20267820818189808
+30
+0.3510489541580695
+11
+-0.3824872047423873
+21
+0.12071693477296785
+31
+0.38248720474238906
+12
+-0.3167241028575086
+22
+0.18286074604362668
+32
+1.0122285079127469
+13
+-0.3167241028575086
+23
+0.18286074604362668
+33
+1.0122285079127469
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.3532598344360491
+20
+0.09465568735549246
+30
+1.0122285079127469
+11
+-0.4017178381596732
+21
+3.885780586188048e-16
+31
+0.4017178381596739
+12
+-0.3657214920872503
+22
+3.885780586188048e-16
+32
+1.0122285079127469
+13
+-0.3657214920872503
+23
+3.885780586188048e-16
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.4017178381596732
+20
+3.885780586188048e-16
+30
+0.4017178381596739
+11
+-0.3532598344360491
+21
+0.09465568735549246
+31
+1.0122285079127469
+12
+-0.39943530308125597
+22
+0.018359816733039713
+32
+0.39943530308125774
+13
+-0.39943530308125597
+23
+0.018359816733039713
+33
+0.39943530308125774
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.38891611994706954
+20
+0.10420976026326378
+30
+0.3889161199470702
+11
+-0.39943530308125597
+21
+0.018359816733039713
+31
+0.39943530308125774
+12
+-0.3532598344360491
+22
+0.09465568735549246
+32
+1.0122285079127469
+13
+-0.3532598344360491
+23
+0.09465568735549246
+33
+1.0122285079127469
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.1828607460436237
+20
+0.31672410285751096
+30
+1.0122285079127469
+11
+-0.20785502656237878
+21
+0.3600154666146186
+31
+0.2078550265623772
+12
+-0.2778969996485491
+22
+0.2997598063673419
+32
+0.27789699964855086
+13
+-0.2778969996485491
+23
+0.2997598063673419
+33
+0.27789699964855086
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.28975619668604413
+20
+0.28975619668604524
+30
+0.2897561966860459
+11
+-0.1828607460436237
+21
+0.31672410285751096
+31
+1.0122285079127469
+12
+-0.2778969996485491
+22
+0.2997598063673419
+32
+0.27789699964855086
+13
+-0.2778969996485491
+23
+0.2997598063673419
+33
+0.27789699964855086
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.1828607460436237
+20
+0.31672410285751096
+30
+1.0122285079127469
+11
+-0.28975619668604413
+21
+0.28975619668604524
+31
+0.2897561966860459
+12
+-0.2586041470805568
+22
+0.2586041470805588
+32
+1.0122285079127469
+13
+-0.2586041470805568
+23
+0.2586041470805588
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.09465568735549051
+20
+0.3532598344360508
+30
+1.0122285079127469
+11
+-0.10931187503979845
+21
+0.4079574715191584
+31
+0.10931187503979797
+12
+-0.19486138979903292
+22
+0.36626416358485825
+32
+0.1948613897990347
+13
+-0.19486138979903292
+23
+0.36626416358485825
+33
+0.1948613897990347
+70
+0
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.20785502656237878
+20
+0.3600154666146186
+30
+0.2078550265623772
+11
+-0.09465568735549051
+21
+0.3532598344360508
+31
+1.0122285079127469
+12
+-0.19486138979903292
+22
+0.36626416358485825
+32
+0.1948613897990347
+13
+-0.19486138979903292
+23
+0.36626416358485825
+33
+0.1948613897990347
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.09465568735549051
+20
+0.3532598344360508
+30
+1.0122285079127469
+11
+-0.20785502656237878
+21
+0.3600154666146186
+31
+0.2078550265623772
+12
+-0.1828607460436237
+22
+0.31672410285751096
+32
+1.0122285079127469
+13
+-0.1828607460436237
+23
+0.31672410285751096
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.365721492087253
+30
+1.0122285079127469
+11
+0.1110862308312226
+21
+0.4145794574834395
+31
+0.0
+12
+1.7763568394002505e-15
+22
+0.4292042372199397
+32
+0.0
+13
+1.7763568394002505e-15
+23
+0.4292042372199397
+33
+0.0
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.1110862308312226
+20
+0.4145794574834395
+30
+0.0
+11
+1.7763568394002505e-15
+21
+0.365721492087253
+31
+1.0122285079127469
+12
+0.09465568735549401
+22
+0.353259834436051
+32
+1.0122285079127469
+13
+0.09465568735549401
+23
+0.353259834436051
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.10931187503979845
+20
+0.4079574715191584
+30
+0.10931187503979797
+11
+1.7763568394002505e-15
+21
+0.365721492087253
+31
+1.0122285079127469
+12
+1.7763568394002505e-15
+22
+0.4292042372199397
+32
+0.0
+13
+1.7763568394002505e-15
+23
+0.4292042372199397
+33
+0.0
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.365721492087253
+30
+1.0122285079127469
+11
+-0.10931187503979845
+21
+0.4079574715191584
+31
+0.10931187503979797
+12
+-0.09465568735549051
+22
+0.3532598344360508
+32
+1.0122285079127469
+13
+-0.09465568735549051
+23
+0.3532598344360508
+33
+1.0122285079127469
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+0.3562827519999995
+21
+0.21460211860996914
+31
+-2.220446049250313e-15
+12
+-1.609823385706477e-15
+22
+0.2146021186099698
+32
+0.0
+13
+-1.609823385706477e-15
+23
+0.2146021186099698
+33
+0.0
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+0.21460211860996914
+30
+-2.220446049250313e-15
+11
+1.7763568394002505e-15
+21
+0.4292042372199397
+31
+0.0
+12
+0.1110862308312226
+22
+0.4145794574834395
+32
+0.0
+13
+0.1110862308312226
+23
+0.4145794574834395
+33
+0.0
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+0.21460211860996914
+30
+-2.220446049250313e-15
+11
+0.1110862308312226
+21
+0.4145794574834395
+31
+0.0
+12
+0.21460211860997136
+22
+0.3717017728443903
+32
+0.0
+13
+0.21460211860997136
+23
+0.3717017728443903
+33
+0.0
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+0.21460211860996914
+30
+-2.220446049250313e-15
+11
+0.21460211860997136
+21
+0.3717017728443903
+31
+0.0
+12
+0.30349322665222
+22
+0.303493226652219
+32
+0.0
+13
+0.30349322665222
+23
+0.303493226652219
+33
+0.0
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+0.21460211860996914
+30
+-2.220446049250313e-15
+11
+0.30349322665222
+21
+0.303493226652219
+31
+0.0
+12
+0.37170177284439176
+22
+0.21460211860997003
+32
+0.0
+13
+0.37170177284439176
+23
+0.21460211860997003
+33
+0.0
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+0.21460211860996914
+30
+-2.220446049250313e-15
+11
+0.37170177284439176
+21
+0.21460211860997003
+31
+0.0
+12
+0.3562827519999995
+22
+2.1649348980190553e-15
+32
+-2.220446049250313e-15
+13
+0.3562827519999995
+23
+2.1649348980190553e-15
+33
+-2.220446049250313e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+2.1649348980190553e-15
+30
+-2.220446049250313e-15
+11
+0.37170177284439176
+21
+0.21460211860997003
+31
+0.0
+12
+0.42920423721993983
+22
+2.7755575615628914e-15
+32
+0.0
+13
+0.42920423721993983
+23
+2.7755575615628914e-15
+33
+0.0
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+0.42920423721993983
+20
+2.7755575615628914e-15
+30
+0.0
+11
+0.37170177284439176
+21
+0.21460211860997003
+31
+0.0
+12
+0.41457945748344094
+22
+0.11108623083122104
+32
+0.0
+13
+0.41457945748344094
+23
+0.11108623083122104
+33
+0.0
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.39943530308125597
+20
+0.018359816733039713
+30
+0.39943530308125774
+11
+-0.2519299499590043
+21
+1.0547118733938987e-15
+31
+0.2519299499590027
+12
+-0.4017178381596732
+22
+3.885780586188048e-16
+32
+0.4017178381596739
+13
+-0.4017178381596732
+23
+3.885780586188048e-16
+33
+0.4017178381596739
+70
+1
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590043
+20
+1.0547118733938987e-15
+30
+0.2519299499590027
+11
+-0.39943530308125597
+21
+0.018359816733039713
+31
+0.39943530308125774
+12
+-0.2519299499590054
+22
+0.21460211860996914
+32
+0.2519299499590072
+13
+-0.2519299499590054
+23
+0.21460211860996914
+33
+0.2519299499590072
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590054
+20
+0.21460211860996914
+30
+0.2519299499590072
+11
+-0.39943530308125597
+21
+0.018359816733039713
+31
+0.39943530308125774
+12
+-0.38891611994706954
+22
+0.10420976026326378
+32
+0.3889161199470702
+13
+-0.38891611994706954
+23
+0.10420976026326378
+33
+0.3889161199470702
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590054
+20
+0.21460211860996914
+30
+0.2519299499590072
+11
+-0.38891611994706954
+21
+0.10420976026326378
+31
+0.3889161199470702
+12
+-0.3824872047423873
+22
+0.12071693477296785
+32
+0.38248720474238906
+13
+-0.3824872047423873
+23
+0.12071693477296785
+33
+0.38248720474238906
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590054
+20
+0.21460211860996914
+30
+0.2519299499590072
+11
+-0.3824872047423873
+21
+0.12071693477296785
+31
+0.38248720474238906
+12
+-0.35104895415806886
+22
+0.20267820818189808
+32
+0.3510489541580695
+13
+-0.35104895415806886
+23
+0.20267820818189808
+33
+0.3510489541580695
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590054
+20
+0.21460211860996914
+30
+0.2519299499590072
+11
+-0.35104895415806886
+21
+0.20267820818189808
+31
+0.3510489541580695
+12
+-0.34136914729025525
+22
+0.2162382106052272
+32
+0.3413691472902548
+13
+-0.34136914729025525
+23
+0.2162382106052272
+33
+0.3413691472902548
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590054
+20
+0.21460211860996914
+30
+0.2519299499590072
+11
+-0.34136914729025525
+21
+0.2162382106052272
+31
+0.3413691472902548
+12
+-1.609823385706477e-15
+22
+0.2146021186099698
+32
+0.0
+13
+-1.609823385706477e-15
+23
+0.2146021186099698
+33
+0.0
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+-1.609823385706477e-15
+20
+0.2146021186099698
+30
+0.0
+11
+-0.34136914729025525
+21
+0.2162382106052272
+31
+0.3413691472902548
+12
+1.7763568394002505e-15
+22
+0.4292042372199397
+32
+0.0
+13
+1.7763568394002505e-15
+23
+0.4292042372199397
+33
+0.0
+70
+3
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.34136914729025525
+21
+0.2162382106052272
+31
+0.3413691472902548
+12
+-0.31956463959574843
+22
+0.24729676227526276
+32
+0.319564639595748
+13
+-0.31956463959574843
+23
+0.24729676227526276
+33
+0.319564639595748
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.31956463959574843
+21
+0.24729676227526276
+31
+0.319564639595748
+12
+-0.28975619668604413
+22
+0.28975619668604524
+32
+0.2897561966860459
+13
+-0.28975619668604413
+23
+0.28975619668604524
+33
+0.2897561966860459
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.28975619668604413
+21
+0.28975619668604524
+31
+0.2897561966860459
+12
+-0.2778969996485491
+22
+0.2997598063673419
+32
+0.27789699964855086
+13
+-0.2778969996485491
+23
+0.2997598063673419
+33
+0.27789699964855086
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.2778969996485491
+21
+0.2997598063673419
+31
+0.27789699964855086
+12
+-0.20785502656237878
+22
+0.3600154666146186
+32
+0.2078550265623772
+13
+-0.20785502656237878
+23
+0.3600154666146186
+33
+0.2078550265623772
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.20785502656237878
+21
+0.3600154666146186
+31
+0.2078550265623772
+12
+-0.19486138979903292
+22
+0.36626416358485825
+32
+0.1948613897990347
+13
+-0.19486138979903292
+23
+0.36626416358485825
+33
+0.1948613897990347
+70
+13
+ 0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.19486138979903292
+21
+0.36626416358485825
+31
+0.1948613897990347
+12
+-0.10931187503979845
+22
+0.4079574715191584
+32
+0.10931187503979797
+13
+-0.10931187503979845
+23
+0.4079574715191584
+33
+0.10931187503979797
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.19123308709410364
+20
+0.15899592086427866
+30
+0.8885515077908579
+11
+2.220446049250313e-15
+21
+0.15899592086427866
+31
+1.0007956832333833
+12
+-0.15693817501863377
+22
+0.15899592086427866
+32
+0.8438575082147479
+13
+-0.15693817501863377
+23
+0.15899592086427866
+33
+0.8438575082147479
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+-0.19123308709410364
+21
+0.15899592086427866
+31
+0.8885515077908579
+12
+-0.21329279355777295
+22
+0.15899592086427866
+32
+0.9418083503174176
+13
+-0.21329279355777295
+23
+0.15899592086427866
+33
+0.9418083503174176
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+-0.21329279355777295
+21
+0.15899592086427866
+31
+0.9418083503174176
+12
+-0.2208169486234871
+22
+0.15899592086427866
+32
+0.9989599821026028
+13
+-0.2208169486234871
+23
+0.15899592086427866
+33
+0.9989599821026028
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+-0.2208169486234871
+21
+0.15899592086427866
+31
+0.9989599821026028
+12
+-0.21329279355777295
+22
+0.15899592086427866
+32
+1.056111613887788
+13
+-0.21329279355777295
+23
+0.15899592086427866
+33
+1.056111613887788
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+-0.21329279355777295
+21
+0.15899592086427866
+31
+1.056111613887788
+12
+0.22057527398480187
+22
+0.15899592086427866
+32
+1.0007956832333833
+13
+0.22057527398480187
+23
+0.15899592086427866
+33
+1.0007956832333833
+70
+15
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.22057527398480187
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+-0.21329279355777295
+21
+0.15899592086427866
+31
+1.056111613887788
+12
+0.21329279355777625
+22
+0.15899592086427866
+32
+1.056111613887788
+13
+0.21329279355777625
+23
+0.15899592086427866
+33
+1.056111613887788
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.21329279355777625
+20
+0.15899592086427866
+30
+1.056111613887788
+11
+-0.21329279355777295
+21
+0.15899592086427866
+31
+1.056111613887788
+12
+-0.19123308709410364
+22
+0.15899592086427866
+32
+1.1093684564143456
+13
+-0.19123308709410364
+23
+0.15899592086427866
+33
+1.1093684564143456
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.21329279355777625
+20
+0.15899592086427866
+30
+1.056111613887788
+11
+-0.19123308709410364
+21
+0.15899592086427866
+31
+1.1093684564143456
+12
+0.19123308709410575
+22
+0.15899592086427866
+32
+1.1093684564143456
+13
+0.19123308709410575
+23
+0.15899592086427866
+33
+1.1093684564143456
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.19123308709410575
+20
+0.15899592086427866
+30
+1.1093684564143456
+11
+-0.19123308709410364
+21
+0.15899592086427866
+31
+1.1093684564143456
+12
+-0.15614116177258947
+22
+0.15899592086427866
+32
+1.1551011438751944
+13
+-0.15614116177258947
+23
+0.15899592086427866
+33
+1.1551011438751944
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.19123308709410575
+20
+0.15899592086427866
+30
+1.1093684564143456
+11
+-0.15614116177258947
+21
+0.15899592086427866
+31
+1.1551011438751944
+12
+0.15614116177259163
+22
+0.15899592086427866
+32
+1.1551011438751944
+13
+0.15614116177259163
+23
+0.15899592086427866
+33
+1.1551011438751944
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.15614116177259163
+20
+0.15899592086427866
+30
+1.1551011438751944
+11
+-0.15614116177258947
+21
+0.15899592086427866
+31
+1.1551011438751944
+12
+-0.15510247388785273
+22
+0.15899592086427866
+32
+1.1558981571212381
+13
+-0.15510247388785273
+23
+0.15899592086427866
+33
+1.1558981571212381
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.15614116177259163
+20
+0.15899592086427866
+30
+1.1551011438751944
+11
+-0.15510247388785273
+21
+0.15899592086427866
+31
+1.1558981571212381
+12
+0.110408474311746
+22
+0.15899592086427866
+32
+1.1901930691967098
+13
+0.110408474311746
+23
+0.15899592086427866
+33
+1.1901930691967098
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.110408474311746
+20
+0.15899592086427866
+30
+1.1901930691967098
+11
+-0.15510247388785273
+21
+0.15899592086427866
+31
+1.1558981571212381
+12
+-0.11040847431174272
+22
+0.15899592086427866
+32
+1.1901930691967098
+13
+-0.11040847431174272
+23
+0.15899592086427866
+33
+1.1901930691967098
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.110408474311746
+20
+0.15899592086427866
+30
+1.1901930691967098
+11
+-0.11040847431174272
+21
+0.15899592086427866
+31
+1.1901930691967098
+12
+-0.0571516317851824
+22
+0.15899592086427866
+32
+1.2122527756603774
+13
+-0.0571516317851824
+23
+0.15899592086427866
+33
+1.2122527756603774
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.110408474311746
+20
+0.15899592086427866
+30
+1.1901930691967098
+11
+-0.0571516317851824
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+0.057151631785184565
+22
+0.15899592086427866
+32
+1.2122527756603774
+13
+0.057151631785184565
+23
+0.15899592086427866
+33
+1.2122527756603774
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.057151631785184565
+20
+0.15899592086427866
+30
+1.2122527756603774
+11
+-0.0571516317851824
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+1.0547118733938987e-15
+22
+0.15899592086427866
+32
+1.2197769307260904
+13
+1.0547118733938987e-15
+23
+0.15899592086427866
+33
+1.2197769307260904
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.22057527398480187
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+2.220446049250313e-15
+22
+0.15899592086427866
+32
+1.0007956832333833
+13
+2.220446049250313e-15
+23
+0.15899592086427866
+33
+1.0007956832333833
+70
+12
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.15693817501863658
+20
+-1.887379141862766e-15
+30
+0.8438575082147456
+11
+-0.2931142709759422
+21
+0.07853973219804244
+31
+0.7076814122574394
+12
+-0.30391732134661864
+22
+-2.3314683517128287e-15
+32
+0.696878361886763
+13
+-0.30391732134661864
+23
+-2.3314683517128287e-15
+33
+0.696878361886763
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2931142709759422
+20
+0.07853973219804244
+30
+0.7076814122574394
+11
+-0.15693817501863658
+21
+-1.887379141862766e-15
+31
+0.8438575082147456
+12
+-0.2616302453704491
+22
+0.1510522925927807
+32
+0.7391654378629331
+13
+-0.2616302453704491
+23
+0.1510522925927807
+33
+0.7391654378629331
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2616302453704491
+20
+0.1510522925927807
+30
+0.7391654378629331
+11
+-0.15693817501863658
+21
+-1.887379141862766e-15
+31
+0.8438575082147456
+12
+-0.21211943838078534
+22
+0.21211943838079228
+32
+0.788676244852598
+13
+-0.21211943838078534
+23
+0.21211943838079228
+33
+0.788676244852598
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21211943838078534
+20
+0.21211943838079228
+30
+0.788676244852598
+11
+-0.15693817501863658
+21
+-1.887379141862766e-15
+31
+0.8438575082147456
+12
+-0.15693817501863377
+22
+0.15899592086427866
+32
+0.8438575082147479
+13
+-0.15693817501863377
+23
+0.15899592086427866
+33
+0.8438575082147479
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21211943838078534
+20
+0.21211943838079228
+30
+0.788676244852598
+11
+-0.15693817501863377
+21
+0.15899592086427866
+31
+0.8438575082147479
+12
+-0.1486302864960926
+22
+0.25743520775475925
+32
+0.8521653967372884
+13
+-0.1486302864960926
+23
+0.25743520775475925
+33
+0.8521653967372884
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.1486302864960926
+20
+0.25743520775475925
+30
+0.8521653967372884
+11
+-0.15693817501863377
+21
+0.15899592086427866
+31
+0.8438575082147479
+12
+2.220446049250313e-15
+22
+0.15899592086427866
+32
+1.0007956832333833
+13
+2.220446049250313e-15
+23
+0.15899592086427866
+33
+1.0007956832333833
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.1486302864960926
+20
+0.25743520775475925
+30
+0.8521653967372884
+11
+2.220446049250313e-15
+21
+0.15899592086427866
+31
+1.0007956832333833
+12
+-0.07613234059483498
+22
+0.2841297631990751
+32
+0.9246633426385472
+13
+-0.07613234059483498
+23
+0.2841297631990751
+33
+0.9246633426385472
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.07613234059483498
+20
+0.2841297631990751
+30
+0.9246633426385472
+11
+2.220446049250313e-15
+21
+0.15899592086427866
+31
+1.0007956832333833
+12
+2.220446049250313e-15
+22
+0.2908891820000008
+32
+1.0007956832333833
+13
+2.220446049250313e-15
+23
+0.2908891820000008
+33
+1.0007956832333833
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2931142709759422
+20
+0.07853973219804244
+30
+0.7076814122574394
+11
+-0.32007010417162757
+21
+-2.220446049250313e-15
+31
+0.3200701041716287
+12
+-0.30391732134661864
+22
+-2.3314683517128287e-15
+32
+0.696878361886763
+13
+-0.30391732134661864
+23
+-2.3314683517128287e-15
+33
+0.696878361886763
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.32007010417162757
+20
+-2.220446049250313e-15
+30
+0.3200701041716287
+11
+-0.2931142709759422
+21
+0.07853973219804244
+31
+0.7076814122574394
+12
+-0.3095976113128597
+22
+0.08295642992988683
+32
+0.30959761131286023
+13
+-0.3095976113128597
+23
+0.08295642992988683
+33
+0.30959761131286023
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.16339321594943848
+20
+0.2830053516365104
+30
+0.16339321594944067
+11
+-0.07613234059483498
+21
+0.2841297631990751
+31
+0.9246633426385472
+12
+-0.0854433972629631
+22
+0.3188790997566827
+32
+0.08544339726296475
+13
+-0.0854433972629631
+23
+0.3188790997566827
+33
+0.08544339726296475
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.07613234059483498
+20
+0.2841297631990751
+30
+0.9246633426385472
+11
+-0.16339321594943848
+21
+0.2830053516365104
+31
+0.16339321594944067
+12
+-0.1486302864960926
+22
+0.25743520775475925
+32
+0.8521653967372884
+13
+-0.1486302864960926
+23
+0.25743520775475925
+33
+0.8521653967372884
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2616302453704491
+20
+0.1510522925927807
+30
+0.7391654378629331
+11
+-0.3095976113128597
+21
+0.08295642992988683
+31
+0.30959761131286023
+12
+-0.2931142709759422
+22
+0.07853973219804244
+32
+0.7076814122574394
+13
+-0.2931142709759422
+23
+0.07853973219804244
+33
+0.7076814122574394
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.3095976113128597
+20
+0.08295642992988683
+30
+0.30959761131286023
+11
+-0.2616302453704491
+21
+0.1510522925927807
+31
+0.7391654378629331
+12
+-0.27872379164223104
+22
+0.16092125613419955
+32
+0.27872379164223327
+13
+-0.27872379164223104
+23
+0.16092125613419955
+33
+0.27872379164223327
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21211943838078534
+20
+0.21211943838079228
+30
+0.788676244852598
+11
+-0.27872379164223104
+21
+0.16092125613419955
+31
+0.27872379164223327
+12
+-0.2616302453704491
+22
+0.1510522925927807
+32
+0.7391654378629331
+13
+-0.2616302453704491
+23
+0.1510522925927807
+33
+0.7391654378629331
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.27872379164223104
+20
+0.16092125613419955
+30
+0.27872379164223327
+11
+-0.21211943838078534
+21
+0.21211943838079228
+31
+0.788676244852598
+12
+-0.22908176290007004
+22
+0.22908176290007598
+32
+0.22908176290007168
+13
+-0.22908176290007004
+23
+0.22908176290007598
+33
+0.22908176290007168
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.3095976113128597
+20
+0.08295642992988683
+30
+0.30959761131286023
+11
+-0.18812188165369356
+21
+-1.887379141862766e-15
+31
+0.1881218816536935
+12
+-0.32007010417162757
+22
+-2.220446049250313e-15
+32
+0.3200701041716287
+13
+-0.32007010417162757
+23
+-2.220446049250313e-15
+33
+0.3200701041716287
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.18812188165369356
+20
+-1.887379141862766e-15
+30
+0.1881218816536935
+11
+-0.3095976113128597
+21
+0.08295642992988683
+31
+0.30959761131286023
+12
+-0.18812188165372323
+22
+0.1915613504388899
+32
+0.18812188165372262
+13
+-0.18812188165372323
+23
+0.1915613504388899
+33
+0.18812188165372262
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.18812188165372323
+20
+0.1915613504388899
+30
+0.18812188165372262
+11
+-0.3095976113128597
+21
+0.08295642992988683
+31
+0.30959761131286023
+12
+-0.27872379164223104
+22
+0.16092125613419955
+32
+0.27872379164223327
+13
+-0.27872379164223104
+23
+0.16092125613419955
+33
+0.27872379164223327
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.18812188165372323
+20
+0.1915613504388899
+30
+0.18812188165372262
+11
+-0.27872379164223104
+21
+0.16092125613419955
+31
+0.27872379164223327
+12
+-0.22908176290007004
+22
+0.22908176290007598
+32
+0.22908176290007168
+13
+-0.22908176290007004
+23
+0.22908176290007598
+33
+0.22908176290007168
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.18812188165372323
+20
+0.1915613504388899
+30
+0.18812188165372262
+11
+-0.22908176290007004
+21
+0.22908176290007598
+31
+0.22908176290007168
+12
+1.6653345369377348e-15
+22
+0.19156135043889
+32
+0.0
+13
+1.6653345369377348e-15
+23
+0.19156135043889
+33
+0.0
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+1.6653345369377348e-15
+20
+0.19156135043889
+30
+0.0
+11
+-0.22908176290007004
+21
+0.22908176290007598
+31
+0.22908176290007168
+12
+2.220446049250313e-15
+22
+0.33379067100000115
+32
+-2.2379254005500117e-15
+13
+2.220446049250313e-15
+23
+0.33379067100000115
+33
+-2.2379254005500117e-15
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.33379067100000115
+30
+-2.2379254005500117e-15
+11
+-0.22908176290007004
+21
+0.22908176290007598
+31
+0.22908176290007168
+12
+-0.16339321594943848
+22
+0.2830053516365104
+32
+0.16339321594944067
+13
+-0.16339321594943848
+23
+0.2830053516365104
+33
+0.16339321594944067
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.33379067100000115
+30
+-2.2379254005500117e-15
+11
+-0.16339321594943848
+21
+0.2830053516365104
+31
+0.16339321594944067
+12
+-0.0854433972629631
+22
+0.3188790997566827
+32
+0.08544339726296475
+13
+-0.0854433972629631
+23
+0.3188790997566827
+33
+0.08544339726296475
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.22908176290007004
+20
+0.22908176290007598
+30
+0.22908176290007168
+11
+-0.1486302864960926
+21
+0.25743520775475925
+31
+0.8521653967372884
+12
+-0.16339321594943848
+22
+0.2830053516365104
+32
+0.16339321594944067
+13
+-0.16339321594943848
+23
+0.2830053516365104
+33
+0.16339321594944067
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.1486302864960926
+20
+0.25743520775475925
+30
+0.8521653967372884
+11
+-0.22908176290007004
+21
+0.22908176290007598
+31
+0.22908176290007168
+12
+-0.21211943838078534
+22
+0.21211943838079228
+32
+0.788676244852598
+13
+-0.21211943838078534
+23
+0.21211943838079228
+33
+0.788676244852598
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.19123308709410364
+20
+0.15899592086427866
+30
+0.8885515077908579
+11
+-0.15693817501863658
+21
+-1.887379141862766e-15
+31
+0.8438575082147456
+12
+-0.19123308709410083
+22
+-1.887379141862766e-15
+32
+0.8885515077908601
+13
+-0.19123308709410083
+23
+-1.887379141862766e-15
+33
+0.8885515077908601
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.15693817501863658
+20
+-1.887379141862766e-15
+30
+0.8438575082147456
+11
+-0.19123308709410364
+21
+0.15899592086427866
+31
+0.8885515077908579
+12
+-0.15693817501863377
+22
+0.15899592086427866
+32
+0.8438575082147479
+13
+-0.15693817501863377
+23
+0.15899592086427866
+33
+0.8438575082147479
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.11040847431174217
+20
+-1.887379141862766e-15
+30
+1.1901930691967075
+11
+-0.0571516317851824
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+-0.11040847431174272
+22
+0.15899592086427866
+32
+1.1901930691967098
+13
+-0.11040847431174272
+23
+0.15899592086427866
+33
+1.1901930691967098
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.0571516317851824
+20
+0.15899592086427866
+30
+1.2122527756603774
+11
+-0.11040847431174217
+21
+-1.887379141862766e-15
+31
+1.1901930691967075
+12
+-0.0571516317851824
+22
+-1.887379141862766e-15
+32
+1.212252775660373
+13
+-0.0571516317851824
+23
+-1.887379141862766e-15
+33
+1.212252775660373
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2208169486234871
+20
+0.15899592086427866
+30
+0.9989599821026028
+11
+-0.2132927935577707
+21
+-1.887379141862766e-15
+31
+0.9418083503174198
+12
+-0.22081694862348375
+22
+-1.887379141862766e-15
+32
+0.9989599821026028
+13
+-0.22081694862348375
+23
+-1.887379141862766e-15
+33
+0.9989599821026028
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2132927935577707
+20
+-1.887379141862766e-15
+30
+0.9418083503174198
+11
+-0.2208169486234871
+21
+0.15899592086427866
+31
+0.9989599821026028
+12
+-0.21329279355777295
+22
+0.15899592086427866
+32
+0.9418083503174176
+13
+-0.21329279355777295
+23
+0.15899592086427866
+33
+0.9418083503174176
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21329279355777295
+20
+0.15899592086427866
+30
+0.9418083503174176
+11
+-0.19123308709410083
+21
+-1.887379141862766e-15
+31
+0.8885515077908601
+12
+-0.2132927935577707
+22
+-1.887379141862766e-15
+32
+0.9418083503174198
+13
+-0.2132927935577707
+23
+-1.887379141862766e-15
+33
+0.9418083503174198
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.19123308709410083
+20
+-1.887379141862766e-15
+30
+0.8885515077908601
+11
+-0.21329279355777295
+21
+0.15899592086427866
+31
+0.9418083503174176
+12
+-0.19123308709410364
+22
+0.15899592086427866
+32
+0.8885515077908579
+13
+-0.19123308709410364
+23
+0.15899592086427866
+33
+0.8885515077908579
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21329279355777295
+20
+0.15899592086427866
+30
+1.056111613887788
+11
+-0.22057527398479468
+21
+-1.3877787807814457e-15
+31
+1.0007956832333833
+12
+-0.21329279355776792
+22
+-1.887379141862766e-15
+32
+1.0561116138877857
+13
+-0.21329279355776792
+23
+-1.887379141862766e-15
+33
+1.0561116138877857
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.22057527398479468
+20
+-1.3877787807814457e-15
+30
+1.0007956832333833
+11
+-0.2208169486234871
+21
+0.15899592086427866
+31
+0.9989599821026028
+12
+-0.22081694862348375
+22
+-1.887379141862766e-15
+32
+0.9989599821026028
+13
+-0.22081694862348375
+23
+-1.887379141862766e-15
+33
+0.9989599821026028
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2208169486234871
+20
+0.15899592086427866
+30
+0.9989599821026028
+11
+-0.22057527398479468
+21
+-1.3877787807814457e-15
+31
+1.0007956832333833
+12
+-0.21329279355777295
+22
+0.15899592086427866
+32
+1.056111613887788
+13
+-0.21329279355777295
+23
+0.15899592086427866
+33
+1.056111613887788
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.15614116177258947
+20
+0.15899592086427866
+30
+1.1551011438751944
+11
+-0.19123308709409917
+21
+-1.887379141862766e-15
+31
+1.1093684564143433
+12
+-0.15614116177258947
+22
+-1.887379141862766e-15
+32
+1.1551011438751921
+13
+-0.15614116177258947
+23
+-1.887379141862766e-15
+33
+1.1551011438751921
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.19123308709409917
+20
+-1.887379141862766e-15
+30
+1.1093684564143433
+11
+-0.15614116177258947
+21
+0.15899592086427866
+31
+1.1551011438751944
+12
+-0.19123308709410364
+22
+0.15899592086427866
+32
+1.1093684564143456
+13
+-0.19123308709410364
+23
+0.15899592086427866
+33
+1.1093684564143456
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.11040847431174217
+20
+-1.887379141862766e-15
+30
+1.1901930691967075
+11
+-0.15614116177258947
+21
+0.15899592086427866
+31
+1.1551011438751944
+12
+-0.15614116177258947
+22
+-1.887379141862766e-15
+32
+1.1551011438751921
+13
+-0.15614116177258947
+23
+-1.887379141862766e-15
+33
+1.1551011438751921
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.15614116177258947
+20
+0.15899592086427866
+30
+1.1551011438751944
+11
+-0.11040847431174217
+21
+-1.887379141862766e-15
+31
+1.1901930691967075
+12
+-0.15510247388785273
+22
+0.15899592086427866
+32
+1.1558981571212381
+13
+-0.15510247388785273
+23
+0.15899592086427866
+33
+1.1558981571212381
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.15510247388785273
+20
+0.15899592086427866
+30
+1.1558981571212381
+11
+-0.11040847431174217
+21
+-1.887379141862766e-15
+31
+1.1901930691967075
+12
+-0.11040847431174272
+22
+0.15899592086427866
+32
+1.1901930691967098
+13
+-0.11040847431174272
+23
+0.15899592086427866
+33
+1.1901930691967098
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.19123308709410364
+20
+0.15899592086427866
+30
+1.1093684564143456
+11
+-0.21329279355776792
+21
+-1.887379141862766e-15
+31
+1.0561116138877857
+12
+-0.19123308709409917
+22
+-1.887379141862766e-15
+32
+1.1093684564143433
+13
+-0.19123308709409917
+23
+-1.887379141862766e-15
+33
+1.1093684564143433
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21329279355776792
+20
+-1.887379141862766e-15
+30
+1.0561116138877857
+11
+-0.19123308709410364
+21
+0.15899592086427866
+31
+1.1093684564143456
+12
+-0.21329279355777295
+22
+0.15899592086427866
+32
+1.056111613887788
+13
+-0.21329279355777295
+23
+0.15899592086427866
+33
+1.056111613887788
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.21329279355777625
+20
+0.15899592086427866
+30
+1.056111613887788
+11
+0.1912330870941092
+21
+-1.887379141862766e-15
+31
+1.10936845641435
+12
+0.21329279355777625
+22
+-1.887379141862766e-15
+32
+1.0561116138877857
+13
+0.21329279355777625
+23
+-1.887379141862766e-15
+33
+1.0561116138877857
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.1912330870941092
+20
+-1.887379141862766e-15
+30
+1.10936845641435
+11
+0.21329279355777625
+21
+0.15899592086427866
+31
+1.056111613887788
+12
+0.19123308709410575
+22
+0.15899592086427866
+32
+1.1093684564143456
+13
+0.19123308709410575
+23
+0.15899592086427866
+33
+1.1093684564143456
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+1.6653345369377348e-15
+20
+-1.887379141862766e-15
+30
+1.2197769307260882
+11
+0.057151631785184565
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+1.0547118733938987e-15
+22
+0.15899592086427866
+32
+1.2197769307260904
+13
+1.0547118733938987e-15
+23
+0.15899592086427866
+33
+1.2197769307260904
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.057151631785184565
+20
+0.15899592086427866
+30
+1.2122527756603774
+11
+1.6653345369377348e-15
+21
+-1.887379141862766e-15
+31
+1.2197769307260882
+12
+0.057151631785183454
+22
+-1.887379141862766e-15
+32
+1.2122527756603774
+13
+0.057151631785183454
+23
+-1.887379141862766e-15
+33
+1.2122527756603774
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.11040847431174489
+20
+-1.887379141862766e-15
+30
+1.1901930691967098
+11
+0.057151631785184565
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+0.057151631785183454
+22
+-1.887379141862766e-15
+32
+1.2122527756603774
+13
+0.057151631785183454
+23
+-1.887379141862766e-15
+33
+1.2122527756603774
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.057151631785184565
+20
+0.15899592086427866
+30
+1.2122527756603774
+11
+0.11040847431174489
+21
+-1.887379141862766e-15
+31
+1.1901930691967098
+12
+0.110408474311746
+22
+0.15899592086427866
+32
+1.1901930691967098
+13
+0.110408474311746
+23
+0.15899592086427866
+33
+1.1901930691967098
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.22057527398480187
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+0.21329279355777625
+21
+-1.887379141862766e-15
+31
+1.0561116138877857
+12
+0.22057527398480187
+22
+-1.887379141862766e-15
+32
+1.0007956832333833
+13
+0.22057527398480187
+23
+-1.887379141862766e-15
+33
+1.0007956832333833
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.21329279355777625
+20
+-1.887379141862766e-15
+30
+1.0561116138877857
+11
+0.22057527398480187
+21
+0.15899592086427866
+31
+1.0007956832333833
+12
+0.21329279355777625
+22
+0.15899592086427866
+32
+1.056111613887788
+13
+0.21329279355777625
+23
+0.15899592086427866
+33
+1.056111613887788
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+1.6653345369377348e-15
+20
+-1.887379141862766e-15
+30
+1.2197769307260882
+11
+-0.0571516317851824
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+-0.0571516317851824
+22
+-1.887379141862766e-15
+32
+1.212252775660373
+13
+-0.0571516317851824
+23
+-1.887379141862766e-15
+33
+1.212252775660373
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.0571516317851824
+20
+0.15899592086427866
+30
+1.2122527756603774
+11
+1.6653345369377348e-15
+21
+-1.887379141862766e-15
+31
+1.2197769307260882
+12
+1.0547118733938987e-15
+22
+0.15899592086427866
+32
+1.2197769307260904
+13
+1.0547118733938987e-15
+23
+0.15899592086427866
+33
+1.2197769307260904
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.15614116177259496
+20
+-1.887379141862766e-15
+30
+1.1551011438751944
+11
+0.110408474311746
+21
+0.15899592086427866
+31
+1.1901930691967098
+12
+0.11040847431174489
+22
+-1.887379141862766e-15
+32
+1.1901930691967098
+13
+0.11040847431174489
+23
+-1.887379141862766e-15
+33
+1.1901930691967098
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.110408474311746
+20
+0.15899592086427866
+30
+1.1901930691967098
+11
+0.15614116177259496
+21
+-1.887379141862766e-15
+31
+1.1551011438751944
+12
+0.15614116177259163
+22
+0.15899592086427866
+32
+1.1551011438751944
+13
+0.15614116177259163
+23
+0.15899592086427866
+33
+1.1551011438751944
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.19123308709410575
+20
+0.15899592086427866
+30
+1.1093684564143456
+11
+0.15614116177259496
+21
+-1.887379141862766e-15
+31
+1.1551011438751944
+12
+0.1912330870941092
+22
+-1.887379141862766e-15
+32
+1.10936845641435
+13
+0.1912330870941092
+23
+-1.887379141862766e-15
+33
+1.10936845641435
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.15614116177259496
+20
+-1.887379141862766e-15
+30
+1.1551011438751944
+11
+0.19123308709410575
+21
+0.15899592086427866
+31
+1.1093684564143456
+12
+0.15614116177259163
+22
+0.15899592086427866
+32
+1.1551011438751944
+13
+0.15614116177259163
+23
+0.15899592086427866
+33
+1.1551011438751944
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.33379067100000115
+30
+-2.2379254005500117e-15
+11
+0.26121143822087073
+21
+0.19156135043888944
+31
+0.036710873561373786
+12
+1.6653345369377348e-15
+22
+0.19156135043889
+32
+0.0
+13
+1.6653345369377348e-15
+23
+0.19156135043889
+33
+0.0
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+2.220446049250313e-15
+21
+0.33379067100000115
+31
+-2.2379254005500117e-15
+12
+0.08625688360556105
+22
+0.3219150721185059
+32
+0.012122614420753606
+13
+0.08625688360556105
+23
+0.3219150721185059
+33
+0.012122614420753606
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+0.08625688360556105
+21
+0.3219150721185059
+31
+0.012122614420753606
+12
+0.1663941050906908
+22
+0.28820304409702857
+32
+0.023385166419002953
+13
+0.1663941050906908
+23
+0.28820304409702857
+33
+0.023385166419002953
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+0.1663941050906908
+21
+0.28820304409702857
+31
+0.023385166419002953
+12
+0.23502443164595715
+22
+0.235024431645955
+32
+0.03303052979897671
+13
+0.23502443164595715
+23
+0.235024431645955
+33
+0.03303052979897671
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+0.23502443164595715
+21
+0.235024431645955
+31
+0.03303052979897671
+12
+0.2491438361672455
+22
+0.21648512794230157
+32
+0.035014882695901035
+13
+0.2491438361672455
+23
+0.21648512794230157
+33
+0.035014882695901035
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+0.2491438361672455
+21
+0.21648512794230157
+31
+0.035014882695901035
+12
+0.2875708080778629
+22
+0.16602908345483203
+32
+0.04041544140330445
+13
+0.2875708080778629
+23
+0.16602908345483203
+33
+0.04041544140330445
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+0.2875708080778629
+21
+0.16602908345483203
+31
+0.04041544140330445
+12
+0.26121143822087073
+22
+1.1102230246251565e-16
+32
+0.036710873561373786
+13
+0.26121143822087073
+23
+1.1102230246251565e-16
+33
+0.036710873561373786
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+1.1102230246251565e-16
+30
+0.036710873561373786
+11
+0.2875708080778629
+21
+0.16602908345483203
+31
+0.04041544140330445
+12
+0.3317917526381973
+22
+4.440892098500626e-16
+32
+0.046630289863139704
+13
+0.3317917526381973
+23
+4.440892098500626e-16
+33
+0.046630289863139704
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.3317917526381973
+20
+4.440892098500626e-16
+30
+0.046630289863139704
+11
+0.2875708080778629
+21
+0.16602908345483203
+31
+0.04041544140330445
+12
+0.32055163282900784
+22
+0.08589155114901104
+32
+0.045050594043002004
+13
+0.32055163282900784
+23
+0.08589155114901104
+33
+0.045050594043002004
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.07540523862764037
+20
+0.28141618171520544
+30
+0.9901981680557236
+11
+0.1663941050906908
+21
+0.28820304409702857
+31
+0.023385166419002953
+12
+0.08625688360556105
+22
+0.3219150721185059
+32
+0.012122614420753606
+13
+0.08625688360556105
+23
+0.3219150721185059
+33
+0.012122614420753606
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.1663941050906908
+20
+0.28820304409702857
+30
+0.023385166419002953
+11
+0.07540523862764037
+21
+0.28141618171520544
+31
+0.9901981680557236
+12
+0.14588403875819583
+22
+0.25267856714253933
+32
+0.9802930186565522
+13
+0.14588403875819583
+23
+0.25267856714253933
+33
+0.9802930186565522
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.2875708080778629
+20
+0.16602908345483203
+30
+0.04041544140330445
+11
+0.20656971000640417
+21
+0.20656971000640245
+31
+0.9717642037648546
+12
+0.25323868698207214
+22
+0.14620742409832682
+32
+0.9652053067859873
+13
+0.25323868698207214
+23
+0.14620742409832682
+33
+0.9652053067859873
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.20656971000640417
+20
+0.20656971000640245
+30
+0.9717642037648546
+11
+0.2875708080778629
+21
+0.16602908345483203
+31
+0.04041544140330445
+12
+0.2491438361672455
+22
+0.21648512794230157
+32
+0.035014882695901035
+13
+0.2491438361672455
+23
+0.21648512794230157
+33
+0.035014882695901035
+70
+13
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.20656971000640417
+20
+0.20656971000640245
+30
+0.9717642037648546
+11
+0.2491438361672455
+21
+0.21648512794230157
+31
+0.035014882695901035
+12
+0.23502443164595715
+22
+0.235024431645955
+32
+0.03303052979897671
+13
+0.23502443164595715
+23
+0.235024431645955
+33
+0.03303052979897671
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.3317917526381973
+20
+4.440892098500626e-16
+30
+0.046630289863139704
+11
+0.2826220454264932
+21
+0.07572834883526192
+31
+0.9610757450638483
+12
+0.2926523001357429
+22
+3.885780586188048e-16
+32
+0.9596660846947334
+13
+0.2926523001357429
+23
+3.885780586188048e-16
+33
+0.9596660846947334
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.2826220454264932
+20
+0.07572834883526192
+30
+0.9610757450638483
+11
+0.3317917526381973
+21
+4.440892098500626e-16
+31
+0.046630289863139704
+12
+0.32055163282900784
+22
+0.08589155114901104
+32
+0.045050594043002004
+13
+0.32055163282900784
+23
+0.08589155114901104
+33
+0.045050594043002004
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.14588403875819583
+20
+0.25267856714253933
+30
+0.9802930186565522
+11
+0.23502443164595715
+21
+0.235024431645955
+31
+0.03303052979897671
+12
+0.1663941050906908
+22
+0.28820304409702857
+32
+0.023385166419002953
+13
+0.1663941050906908
+23
+0.28820304409702857
+33
+0.023385166419002953
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.23502443164595715
+20
+0.235024431645955
+30
+0.03303052979897671
+11
+0.14588403875819583
+21
+0.25267856714253933
+31
+0.9802930186565522
+12
+0.20656971000640417
+22
+0.20656971000640245
+32
+0.9717642037648546
+13
+0.20656971000640417
+23
+0.20656971000640245
+33
+0.9717642037648546
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.32055163282900784
+20
+0.08589155114901104
+30
+0.045050594043002004
+11
+0.25323868698207214
+21
+0.14620742409832682
+31
+0.9652053067859873
+12
+0.2826220454264932
+22
+0.07572834883526192
+32
+0.9610757450638483
+13
+0.2826220454264932
+23
+0.07572834883526192
+33
+0.9610757450638483
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.25323868698207214
+20
+0.14620742409832682
+30
+0.9652053067859873
+11
+0.32055163282900784
+21
+0.08589155114901104
+31
+0.045050594043002004
+12
+0.2875708080778629
+22
+0.16602908345483203
+32
+0.04041544140330445
+13
+0.2875708080778629
+23
+0.16602908345483203
+33
+0.04041544140330445
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.2165682094492341
+20
+-8.326672684688674e-16
+30
+0.9703590063073866
+11
+0.22057527398480187
+21
+0.15899592086427866
+31
+1.0007956832333833
+12
+0.22057527398480187
+22
+-1.887379141862766e-15
+32
+1.0007956832333833
+13
+0.22057527398480187
+23
+-1.887379141862766e-15
+33
+1.0007956832333833
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.22057527398480187
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+0.2165682094492341
+21
+-8.326672684688674e-16
+31
+0.9703590063073866
+12
+0.2165682094492341
+22
+0.15899592086427866
+32
+0.9703590063073866
+13
+0.2165682094492341
+23
+0.15899592086427866
+33
+0.9703590063073866
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.2926523001357429
+20
+3.885780586188048e-16
+30
+0.9596660846947334
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+0.2165682094492341
+22
+-8.326672684688674e-16
+32
+0.9703590063073866
+13
+0.2165682094492341
+23
+-8.326672684688674e-16
+33
+0.9703590063073866
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.2165682094492341
+20
+0.15899592086427866
+30
+0.9703590063073866
+11
+0.2926523001357429
+21
+3.885780586188048e-16
+31
+0.9596660846947334
+12
+0.25323868698207214
+22
+0.14620742409832682
+32
+0.9652053067859873
+13
+0.25323868698207214
+23
+0.14620742409832682
+33
+0.9652053067859873
+70
+15
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.25323868698207214
+20
+0.14620742409832682
+30
+0.9652053067859873
+11
+0.2926523001357429
+21
+3.885780586188048e-16
+31
+0.9596660846947334
+12
+0.2826220454264932
+22
+0.07572834883526192
+32
+0.9610757450638483
+13
+0.2826220454264932
+23
+0.07572834883526192
+33
+0.9610757450638483
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.2165682094492341
+20
+0.15899592086427866
+30
+0.9703590063073866
+11
+2.220446049250313e-15
+21
+0.2908891820000008
+31
+1.0007956832333833
+12
+2.220446049250313e-15
+22
+0.15899592086427866
+32
+1.0007956832333833
+13
+2.220446049250313e-15
+23
+0.15899592086427866
+33
+1.0007956832333833
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.2908891820000008
+30
+1.0007956832333833
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+0.07540523862764037
+22
+0.28141618171520544
+32
+0.9901981680557236
+13
+0.07540523862764037
+23
+0.28141618171520544
+33
+0.9901981680557236
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.07540523862764037
+20
+0.28141618171520544
+30
+0.9901981680557236
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+0.14588403875819583
+22
+0.25267856714253933
+32
+0.9802930186565522
+13
+0.14588403875819583
+23
+0.25267856714253933
+33
+0.9802930186565522
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.14588403875819583
+20
+0.25267856714253933
+30
+0.9802930186565522
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+0.20656971000640417
+22
+0.20656971000640245
+32
+0.9717642037648546
+13
+0.20656971000640417
+23
+0.20656971000640245
+33
+0.9717642037648546
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.20656971000640417
+20
+0.20656971000640245
+30
+0.9717642037648546
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+0.25323868698207214
+22
+0.14620742409832682
+32
+0.9652053067859873
+13
+0.25323868698207214
+23
+0.14620742409832682
+33
+0.9652053067859873
+70
+3
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.2908891820000008
+30
+1.0007956832333833
+11
+0.08625688360556105
+21
+0.3219150721185059
+31
+0.012122614420753606
+12
+2.220446049250313e-15
+22
+0.33379067100000115
+32
+-2.2379254005500117e-15
+13
+2.220446049250313e-15
+23
+0.33379067100000115
+33
+-2.2379254005500117e-15
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+0.08625688360556105
+20
+0.3219150721185059
+30
+0.012122614420753606
+11
+2.220446049250313e-15
+21
+0.2908891820000008
+31
+1.0007956832333833
+12
+0.07540523862764037
+22
+0.28141618171520544
+32
+0.9901981680557236
+13
+0.07540523862764037
+23
+0.28141618171520544
+33
+0.9901981680557236
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+-0.0854433972629631
+20
+0.3188790997566827
+30
+0.08544339726296475
+11
+2.220446049250313e-15
+21
+0.2908891820000008
+31
+1.0007956832333833
+12
+2.220446049250313e-15
+22
+0.33379067100000115
+32
+-2.2379254005500117e-15
+13
+2.220446049250313e-15
+23
+0.33379067100000115
+33
+-2.2379254005500117e-15
+70
+1
+ 0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.2908891820000008
+30
+1.0007956832333833
+11
+-0.0854433972629631
+21
+0.3188790997566827
+31
+0.08544339726296475
+12
+-0.07613234059483498
+22
+0.2841297631990751
+32
+0.9246633426385472
+13
+-0.07613234059483498
+23
+0.2841297631990751
+33
+0.9246633426385472
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09508647761767314
+20
+0.18027301793291245
+30
+1.0018635478066782
+11
+0.09931785063555398
+21
+0.1845043909507944
+31
+1.1319291153552398
+12
+0.09931785063555171
+22
+0.1845043909507933
+32
+1.001863547806677
+13
+0.09931785063555171
+23
+0.1845043909507933
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555398
+20
+0.1845043909507944
+30
+1.1319291153552398
+11
+0.09508647761767314
+21
+0.18027301793291245
+31
+1.0018635478066782
+12
+0.0903926304890455
+22
+0.1755791708042826
+32
+1.0588240032604657
+13
+0.0903926304890455
+23
+0.1755791708042826
+33
+1.0588240032604657
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555398
+20
+0.1845043909507944
+30
+1.1319291153552398
+11
+0.0903926304890455
+21
+0.1755791708042826
+31
+1.0588240032604657
+12
+0.08492812760476576
+22
+0.17011466792000507
+32
+1.0799005744368184
+13
+0.08492812760476576
+23
+0.17011466792000507
+33
+1.0799005744368184
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555398
+20
+0.1845043909507944
+30
+1.1319291153552398
+11
+0.08492812760476576
+21
+0.17011466792000507
+31
+1.0799005744368184
+12
+0.08492812760476576
+22
+0.17011466792000618
+32
+1.0912264321828118
+13
+0.08492812760476576
+23
+0.17011466792000618
+33
+1.0912264321828118
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555398
+20
+0.1845043909507944
+30
+1.1319291153552398
+11
+0.08492812760476576
+21
+0.17011466792000618
+31
+1.0912264321828118
+12
+0.08492812760476576
+22
+0.17011466792000507
+32
+1.1359944433702325
+13
+0.08492812760476576
+23
+0.17011466792000507
+33
+1.1359944433702325
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555398
+20
+0.1845043909507944
+30
+1.1319291153552398
+11
+0.08492812760476576
+21
+0.17011466792000507
+31
+1.1359944433702325
+12
+0.09096170351208649
+22
+0.1761482438273269
+32
+1.1428190583057358
+13
+0.09096170351208649
+23
+0.1761482438273269
+33
+1.1428190583057358
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09096170351208649
+20
+0.1761482438273269
+30
+1.1428190583057358
+11
+0.08492812760476576
+21
+0.17011466792000507
+31
+1.1359944433702325
+12
+0.08492812760476465
+22
+0.17011466792000618
+32
+1.1474487839334422
+13
+0.08492812760476465
+23
+0.17011466792000618
+33
+1.1474487839334422
+70
+1
+ 0
+LINE
+ 8
+finger distal
+10
+-0.20568971316600607
+20
+0.20717595716186143
+30
+0.20568971316600676
+11
+-0.20652621200157167
+21
+0.206526212001578
+31
+0.2045995666591466
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.18396767361172195
+20
+0.11560560777326617
+30
+0.7307557071160136
+11
+0.14004304520099842
+21
+0.16005831690802014
+31
+0.8489738683201561
+12
+0.1752009048041535
+22
+0.11429416310676693
+32
+0.7946280917100798
+13
+0.1752009048041535
+23
+0.11429416310676693
+33
+0.7946280917100798
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.14004304520099842
+20
+0.16005831690802014
+30
+0.8489738683201561
+11
+0.18396767361172195
+21
+0.11560560777326617
+31
+0.7307557071160136
+12
+0.15567497232576927
+22
+0.1634910183993356
+32
+0.7307557071160147
+13
+0.15567497232576927
+23
+0.1634910183993356
+33
+0.7307557071160147
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09524177069161455
+20
+0.193567791051381
+30
+0.9182260948156299
+11
+0.15567497232576927
+21
+0.1634910183993356
+31
+0.7307557071160147
+12
+0.11880320614369011
+22
+0.20023478630317332
+32
+0.7307557071160136
+13
+0.11880320614369011
+23
+0.20023478630317332
+33
+0.7307557071160136
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.15567497232576927
+20
+0.1634910183993356
+30
+0.7307557071160147
+11
+0.09524177069161455
+21
+0.193567791051381
+31
+0.9182260948156299
+12
+0.14004304520099842
+22
+0.16005831690802014
+32
+0.8489738683201561
+13
+0.14004304520099842
+23
+0.16005831690802014
+33
+0.8489738683201561
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.20175320916481837
+20
+0.059841866024748225
+30
+0.7307557071160136
+11
+0.1752009048041535
+21
+0.11429416310676693
+31
+0.7946280917100798
+12
+0.19765914773897608
+22
+0.05953197480025596
+32
+0.7599129336382517
+13
+0.19765914773897608
+23
+0.05953197480025596
+33
+0.7599129336382517
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1752009048041535
+20
+0.11429416310676693
+30
+0.7946280917100798
+11
+0.20175320916481837
+21
+0.059841866024748225
+31
+0.7307557071160136
+12
+0.18396767361172195
+22
+0.11560560777326617
+32
+0.7307557071160136
+13
+0.18396767361172195
+23
+0.11560560777326617
+33
+0.7307557071160136
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.2534617548141387
+20
+0.1463362123712234
+30
+0.30841453414256254
+11
+-0.20653412136710422
+21
+0.2065341213671094
+31
+0.20653412136710492
+12
+-0.2531852032990528
+22
+0.1461765452795445
+32
+0.2531852032990535
+13
+-0.2531852032990528
+23
+0.1461765452795445
+33
+0.2531852032990535
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.20653412136710422
+20
+0.2065341213671094
+30
+0.20653412136710492
+11
+-0.2534617548141387
+21
+0.1463362123712234
+31
+0.30841453414256254
+12
+-0.20695065620168485
+22
+0.2069506562016934
+32
+0.30841453414256254
+13
+-0.20695065620168485
+23
+0.2069506562016934
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.20175320916481837
+20
+0.059841866024748225
+30
+0.7307557071160136
+11
+0.20538343774009993
+21
+1.1657341758564144e-15
+31
+0.7479729991936949
+12
+0.20781952412910853
+22
+1.1657341758564144e-15
+32
+0.7307557071160136
+13
+0.20781952412910853
+23
+1.1657341758564144e-15
+33
+0.7307557071160136
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.20538343774009993
+20
+1.1657341758564144e-15
+30
+0.7479729991936949
+11
+0.20175320916481837
+21
+0.059841866024748225
+31
+0.7307557071160136
+12
+0.19765914773897608
+22
+0.05953197480025596
+32
+0.7599129336382517
+13
+0.19765914773897608
+23
+0.05953197480025596
+33
+0.7599129336382517
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.14586628805175494
+20
+0.25264782201712543
+30
+0.14586628805175564
+11
+-0.07574919749967438
+21
+0.2826998537013695
+31
+0.30841453414256254
+12
+-0.07540049589488734
+22
+0.2813984815956233
+32
+0.07540049589488913
+13
+-0.07540049589488734
+23
+0.2813984815956233
+33
+0.07540049589488913
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.07574919749967438
+20
+0.2826998537013695
+30
+0.30841453414256254
+11
+-0.14586628805175494
+21
+0.25264782201712543
+31
+0.14586628805175564
+12
+-0.1463362123712171
+22
+0.253461754814145
+32
+0.30841453414256254
+13
+-0.1463362123712171
+23
+0.253461754814145
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.044467883797984775
+20
+0.21278370795076884
+30
+0.9967105744140091
+11
+0.11880320614369011
+21
+0.20023478630317332
+31
+0.7307557071160136
+12
+0.07586512499733417
+22
+0.2233328844240816
+32
+0.7307557071160136
+13
+0.07586512499733417
+23
+0.2233328844240816
+33
+0.7307557071160136
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.11880320614369011
+20
+0.20023478630317332
+30
+0.7307557071160136
+11
+0.044467883797984775
+21
+0.21278370795076884
+31
+0.9967105744140091
+12
+0.09524177069161455
+22
+0.193567791051381
+32
+0.9182260948156299
+13
+0.09524177069161455
+23
+0.193567791051381
+33
+0.9182260948156299
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.2826998537013644
+20
+0.07574919749967957
+30
+0.30841453414256254
+11
+-0.2531852032990528
+21
+0.1461765452795445
+31
+0.2531852032990535
+12
+-0.2825554318689639
+22
+0.07571049978631911
+32
+0.28255543186896687
+13
+-0.2825554318689639
+23
+0.07571049978631911
+33
+0.28255543186896687
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.2531852032990528
+20
+0.1461765452795445
+30
+0.2531852032990535
+11
+-0.2826998537013644
+21
+0.07574919749967957
+31
+0.30841453414256254
+12
+-0.2534617548141387
+22
+0.1463362123712234
+32
+0.30841453414256254
+13
+-0.2534617548141387
+23
+0.1463362123712234
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.29267242474243715
+20
+-1.1102230246251565e-15
+30
+0.30841453414256254
+11
+-0.2825554318689639
+21
+0.07571049978631911
+31
+0.28255543186896687
+12
+-0.29258087504374125
+22
+-2.220446049250313e-15
+32
+0.2925808750437419
+13
+-0.29258087504374125
+23
+-2.220446049250313e-15
+33
+0.2925808750437419
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.2825554318689639
+20
+0.07571049978631911
+30
+0.28255543186896687
+11
+-0.29267242474243715
+21
+-1.1102230246251565e-15
+31
+0.30841453414256254
+12
+-0.2826998537013644
+22
+0.07574919749967957
+32
+0.30841453414256254
+13
+-0.2826998537013644
+23
+0.07574919749967957
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1668511448333203
+20
+0.06753329419776749
+30
+1.2060268924650375
+11
+0.14584425706155324
+21
+0.06447473207281956
+31
+1.2072937903785521
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.2075983619512358
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.2075983619512358
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999836
+30
+1.1778735767177981
+11
+0.11937978943923483
+21
+0.12455561770440277
+31
+1.1824074727105631
+12
+0.12280916074947745
+22
+0.12008637400000183
+32
+1.1842586940664752
+13
+0.12280916074947745
+23
+0.12008637400000183
+33
+1.1842586940664752
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999947
+30
+0.8478281150218822
+11
+0.1668511448333203
+21
+0.06753329419776749
+31
+1.2060268924650375
+12
+0.16685114483332258
+22
+0.06753329419776638
+32
+0.8075348555246178
+13
+0.16685114483332258
+23
+0.06753329419776638
+33
+0.8075348555246178
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1668511448333203
+20
+0.06753329419776749
+30
+1.2060268924650375
+11
+0.1407842662509724
+21
+0.13046430599999947
+31
+0.8478281150218822
+12
+0.1407842662509724
+22
+0.13046430599999836
+32
+1.1778735767177981
+13
+0.1407842662509724
+23
+0.13046430599999836
+33
+1.1778735767177981
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1668511448333203
+20
+0.06753329419776749
+30
+1.2060268924650375
+11
+0.12280916074947745
+21
+0.12008637400000183
+31
+1.1842586940664752
+12
+0.14584425706155324
+22
+0.06447473207281956
+32
+1.2072937903785521
+13
+0.14584425706155324
+23
+0.06447473207281956
+33
+1.2072937903785521
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.154986207684761
+20
+0.0
+30
+1.2157820498872123
+11
+0.14680251974877673
+21
+0.06216128129700765
+31
+1.0912264321828118
+12
+0.154986207684761
+22
+-2.220446049250313e-15
+32
+1.0912264321828118
+13
+0.154986207684761
+23
+-2.220446049250313e-15
+33
+1.0912264321828118
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.14680251974877673
+20
+0.06216128129700765
+30
+1.0912264321828118
+11
+0.154986207684761
+21
+0.0
+31
+1.2157820498872123
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.2075983619512358
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.2075983619512358
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999836
+30
+1.1778735767177981
+11
+0.08492812760476576
+21
+0.16945389754362716
+31
+1.147955810876094
+12
+0.11937978943923483
+22
+0.12455561770440277
+32
+1.1824074727105631
+13
+0.11937978943923483
+23
+0.12455561770440277
+33
+1.1824074727105631
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.08492812760476465
+21
+0.17011466792000618
+31
+1.1474487839334422
+12
+0.08492812760476576
+22
+0.16945389754362716
+32
+1.147955810876094
+13
+0.08492812760476576
+23
+0.16945389754362716
+33
+1.147955810876094
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476465
+20
+0.17011466792000618
+30
+1.1474487839334422
+11
+0.08492812760476576
+21
+0.16945389754362827
+31
+1.1363043595428541
+12
+0.08492812760476576
+22
+0.16945389754362716
+32
+1.147955810876094
+13
+0.08492812760476576
+23
+0.16945389754362716
+33
+1.147955810876094
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476576
+20
+0.16945389754362827
+30
+1.1363043595428541
+11
+0.08492812760476465
+21
+0.17011466792000618
+31
+1.1474487839334422
+12
+0.08492812760476576
+22
+0.17011466792000507
+32
+1.1359944433702325
+13
+0.08492812760476576
+23
+0.17011466792000507
+33
+1.1359944433702325
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.154986207684761
+20
+0.0
+30
+1.2157820498872123
+11
+0.16725381217609608
+21
+0.06447473207281734
+31
+1.2072937903785526
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.2075983619512358
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.2075983619512358
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.16725381217609608
+20
+0.06447473207281734
+30
+1.2072937903785526
+11
+0.154986207684761
+21
+0.0
+31
+1.2157820498872123
+12
+0.17574207168476186
+22
+0.0
+32
+1.2157820498872116
+13
+0.17574207168476186
+23
+0.0
+33
+1.2157820498872116
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476576
+20
+0.17011466792000507
+30
+1.1359944433702325
+11
+0.08492812760476465
+21
+0.16945389754362827
+31
+1.0912264321828118
+12
+0.08492812760476576
+22
+0.16945389754362827
+32
+1.1363043595428541
+13
+0.08492812760476576
+23
+0.16945389754362827
+33
+1.1363043595428541
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476465
+20
+0.16945389754362827
+30
+1.0912264321828118
+11
+0.08492812760476576
+21
+0.17011466792000507
+31
+1.1359944433702325
+12
+0.08492812760476576
+22
+0.17011466792000618
+32
+1.0912264321828118
+13
+0.08492812760476576
+23
+0.17011466792000618
+33
+1.0912264321828118
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1668511448333203
+20
+0.06753329419776749
+30
+1.2060268924650375
+11
+0.1407842662509724
+21
+0.13046430599999836
+31
+1.1778735767177981
+12
+0.12280916074947745
+22
+0.12008637400000183
+32
+1.1842586940664752
+13
+0.12280916074947745
+23
+0.12008637400000183
+33
+1.1842586940664752
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.09931785063555398
+21
+0.1845043909507944
+31
+1.1319291153552398
+12
+0.09096170351208649
+22
+0.1761482438273269
+32
+1.1428190583057358
+13
+0.09096170351208649
+23
+0.1761482438273269
+33
+1.1428190583057358
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999947
+30
+0.8478281150218822
+11
+0.10572974783891176
+21
+0.1761482438273269
+31
+1.142819058305737
+12
+0.1407842662509724
+22
+0.13046430599999836
+32
+1.1778735767177981
+13
+0.1407842662509724
+23
+0.13046430599999836
+33
+1.1778735767177981
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.1407842662509724
+21
+0.13046430599999947
+31
+0.8478281150218822
+12
+0.09931785063555287
+22
+0.1845043909507933
+32
+0.9119254345200819
+13
+0.09931785063555287
+23
+0.1845043909507933
+33
+0.9119254345200819
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.09931785063555287
+21
+0.1845043909507933
+31
+0.9119254345200819
+12
+0.09931785063555171
+22
+0.1845043909507933
+32
+1.001863547806677
+13
+0.09931785063555171
+23
+0.1845043909507933
+33
+1.001863547806677
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.09931785063555171
+21
+0.1845043909507933
+31
+1.001863547806677
+12
+0.09931785063555398
+22
+0.1845043909507944
+32
+1.1319291153552398
+13
+0.09931785063555398
+23
+0.1845043909507944
+33
+1.1319291153552398
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1378369198074263
+20
+0.08380615427022808
+30
+1.0912264321828118
+11
+0.14680251974877895
+21
+0.062161281297008764
+31
+1.0852016835471139
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.0912264321828118
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.0912264321828118
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.16725381217609608
+20
+0.06447473207281734
+30
+1.2072937903785526
+11
+0.1668511448333203
+21
+0.06753329419776749
+31
+1.2060268924650375
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.2075983619512358
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.2075983619512358
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476465
+20
+0.16945389754362827
+30
+1.0912264321828118
+11
+0.08492812760476576
+21
+0.17011466792000507
+31
+1.0799005744368184
+12
+0.08492812760476687
+22
+0.16945389754362716
+32
+1.0811770847804012
+13
+0.08492812760476687
+23
+0.16945389754362716
+33
+1.0811770847804012
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476576
+20
+0.17011466792000507
+30
+1.0799005744368184
+11
+0.08492812760476465
+21
+0.16945389754362827
+31
+1.0912264321828118
+12
+0.08492812760476576
+22
+0.17011466792000618
+32
+1.0912264321828118
+13
+0.08492812760476576
+23
+0.17011466792000618
+33
+1.0912264321828118
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999836
+30
+1.1778735767177981
+11
+0.10572974783891176
+21
+0.1761482438273269
+31
+1.142819058305737
+12
+0.08492812760476576
+22
+0.16945389754362716
+32
+1.147955810876094
+13
+0.08492812760476576
+23
+0.16945389754362716
+33
+1.147955810876094
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.12777973751198096
+20
+0.10808634016714758
+30
+1.0912264321828118
+11
+0.1378369198074263
+21
+0.08380615427022808
+31
+1.0912264321828118
+12
+0.13165973447285034
+22
+0.09871919888224923
+32
+1.0953774080416923
+13
+0.13165973447285034
+23
+0.09871919888224923
+33
+1.0953774080416923
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.09096170351208649
+21
+0.1761482438273269
+31
+1.1428190583057358
+12
+0.08492812760476465
+22
+0.17011466792000618
+32
+1.1474487839334422
+13
+0.08492812760476465
+23
+0.17011466792000618
+33
+1.1474487839334422
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.12280916074947745
+20
+0.12008637400000183
+30
+1.1842586940664752
+11
+0.11359374946129114
+21
+0.1320961318119328
+31
+1.0912264321828118
+12
+0.12280916074947745
+22
+0.1200863739999985
+32
+1.0912264321828118
+13
+0.12280916074947745
+23
+0.1200863739999985
+33
+1.0912264321828118
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.11359374946129114
+20
+0.1320961318119328
+30
+1.0912264321828118
+11
+0.12280916074947745
+21
+0.12008637400000183
+31
+1.1842586940664752
+12
+0.11937978943923483
+22
+0.12455561770440277
+32
+1.1824074727105631
+13
+0.11937978943923483
+23
+0.12455561770440277
+33
+1.1824074727105631
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.11359374946129114
+20
+0.1320961318119328
+30
+1.0912264321828118
+11
+0.11937978943923483
+21
+0.12455561770440277
+31
+1.1824074727105631
+12
+0.08492812760476576
+22
+0.16945389754362716
+32
+1.147955810876094
+13
+0.08492812760476576
+23
+0.16945389754362716
+33
+1.147955810876094
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.11359374946129114
+20
+0.1320961318119328
+30
+1.0912264321828118
+11
+0.08492812760476576
+21
+0.16945389754362716
+31
+1.147955810876094
+12
+0.10766421335770565
+22
+0.13982365371130173
+32
+1.0946480508162637
+13
+0.10766421335770565
+23
+0.13982365371130173
+33
+1.0946480508162637
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10766421335770565
+20
+0.13982365371130173
+30
+1.0946480508162637
+11
+0.08492812760476576
+21
+0.16945389754362716
+31
+1.147955810876094
+12
+0.10188925895154644
+22
+0.1473497208204092
+32
+1.091226432182813
+13
+0.10188925895154644
+23
+0.1473497208204092
+33
+1.091226432182813
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10188925895154644
+20
+0.1473497208204092
+30
+1.091226432182813
+11
+0.08492812760476576
+21
+0.16945389754362716
+31
+1.147955810876094
+12
+0.08492812760476465
+22
+0.16945389754362827
+32
+1.0912264321828118
+13
+0.08492812760476465
+23
+0.16945389754362827
+33
+1.0912264321828118
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476465
+20
+0.16945389754362827
+30
+1.0912264321828118
+11
+0.08492812760476576
+21
+0.16945389754362716
+31
+1.147955810876094
+12
+0.08492812760476576
+22
+0.16945389754362827
+32
+1.1363043595428541
+13
+0.08492812760476576
+23
+0.16945389754362827
+33
+1.1363043595428541
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.16685114483332258
+20
+0.06753329419776638
+30
+0.8075348555246178
+11
+0.17574207168476186
+21
+0.0
+31
+1.2157820498872116
+12
+0.17574207168476297
+22
+0.0
+32
+0.7937915750752708
+13
+0.17574207168476297
+23
+0.0
+33
+0.7937915750752708
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.17574207168476186
+20
+0.0
+30
+1.2157820498872116
+11
+0.16685114483332258
+21
+0.06753329419776638
+31
+0.8075348555246178
+12
+0.16725381217609608
+22
+0.06447473207281734
+32
+1.2072937903785526
+13
+0.16725381217609608
+23
+0.06447473207281734
+33
+1.2072937903785526
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.16725381217609608
+20
+0.06447473207281734
+30
+1.2072937903785526
+11
+0.16685114483332258
+21
+0.06753329419776638
+31
+0.8075348555246178
+12
+0.1668511448333203
+22
+0.06753329419776749
+32
+1.2060268924650375
+13
+0.1668511448333203
+23
+0.06753329419776749
+33
+1.2060268924650375
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.14819683336031747
+20
+0.051570417947724545
+30
+1.090997067383562
+11
+0.12709521825000325
+21
+0.09529669931084889
+31
+1.1119026978066777
+12
+0.1417562962576535
+22
+0.049329201434111514
+32
+1.1119026978066788
+13
+0.1417562962576535
+23
+0.049329201434111514
+33
+1.1119026978066788
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.12709521825000325
+20
+0.09529669931084889
+30
+1.1119026978066777
+11
+0.14819683336031747
+21
+0.051570417947724545
+31
+1.090997067383562
+12
+0.14680251974877895
+22
+0.062161281297008764
+32
+1.0852016835471139
+13
+0.14680251974877895
+23
+0.062161281297008764
+33
+1.0852016835471139
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.12709521825000325
+20
+0.09529669931084889
+30
+1.1119026978066777
+11
+0.14680251974877895
+21
+0.062161281297008764
+31
+1.0852016835471139
+12
+0.1378369198074263
+22
+0.08380615427022808
+32
+1.0912264321828118
+13
+0.1378369198074263
+23
+0.08380615427022808
+33
+1.0912264321828118
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.12709521825000325
+20
+0.09529669931084889
+30
+1.1119026978066777
+11
+0.1378369198074263
+21
+0.08380615427022808
+31
+1.0912264321828118
+12
+0.13165973447285034
+22
+0.09871919888224923
+32
+1.0953774080416923
+13
+0.13165973447285034
+23
+0.09871919888224923
+33
+1.0953774080416923
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000091
+20
+0.19059339862169328
+30
+0.9344745934705629
+11
+0.09931785063555171
+21
+0.1845043909507933
+31
+1.001863547806677
+12
+0.09931785063555287
+22
+0.1845043909507933
+32
+0.9119254345200819
+13
+0.09931785063555287
+23
+0.1845043909507933
+33
+0.9119254345200819
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555171
+20
+0.1845043909507933
+30
+1.001863547806677
+11
+0.08473014550000091
+21
+0.19059339862169328
+31
+0.9344745934705629
+12
+0.08473014550000202
+22
+0.19059339862169217
+32
+1.001863547806677
+13
+0.08473014550000202
+23
+0.19059339862169217
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555171
+20
+0.1845043909507933
+30
+1.001863547806677
+11
+0.08473014550000202
+21
+0.19059339862169217
+31
+1.001863547806677
+12
+0.09508647761767314
+22
+0.18027301793291245
+32
+1.0018635478066782
+13
+0.09508647761767314
+23
+0.18027301793291245
+33
+1.0018635478066782
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476465
+20
+0.16945389754362827
+30
+1.0912264321828118
+11
+0.08492812760476687
+21
+0.16945389754362716
+31
+1.0811770847804012
+12
+0.10188925895154644
+22
+0.1473497208204092
+32
+1.091226432182813
+13
+0.10188925895154644
+23
+0.1473497208204092
+33
+1.091226432182813
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.14584425706155324
+20
+0.06447473207281956
+30
+1.2072937903785521
+11
+0.14680251974877673
+21
+0.06216128129700765
+31
+1.0912264321828118
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.2075983619512358
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.2075983619512358
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.14680251974877673
+20
+0.06216128129700765
+30
+1.0912264321828118
+11
+0.14584425706155324
+21
+0.06447473207281956
+31
+1.2072937903785521
+12
+0.1378369198074263
+22
+0.08380615427022808
+32
+1.0912264321828118
+13
+0.1378369198074263
+23
+0.08380615427022808
+33
+1.0912264321828118
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1378369198074263
+20
+0.08380615427022808
+30
+1.0912264321828118
+11
+0.14584425706155324
+21
+0.06447473207281956
+31
+1.2072937903785521
+12
+0.12280916074947745
+22
+0.12008637400000183
+32
+1.1842586940664752
+13
+0.12280916074947745
+23
+0.12008637400000183
+33
+1.1842586940664752
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1378369198074263
+20
+0.08380615427022808
+30
+1.0912264321828118
+11
+0.12280916074947745
+21
+0.12008637400000183
+31
+1.1842586940664752
+12
+0.13165973447285034
+22
+0.09871919888224923
+32
+1.0953774080416923
+13
+0.13165973447285034
+23
+0.09871919888224923
+33
+1.0953774080416923
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.13165973447285034
+20
+0.09871919888224923
+30
+1.0953774080416923
+11
+0.12280916074947745
+21
+0.12008637400000183
+31
+1.1842586940664752
+12
+0.12777973751198096
+22
+0.10808634016714758
+32
+1.0912264321828118
+13
+0.12777973751198096
+23
+0.10808634016714758
+33
+1.0912264321828118
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.12777973751198096
+20
+0.10808634016714758
+30
+1.0912264321828118
+11
+0.12280916074947745
+21
+0.12008637400000183
+31
+1.1842586940664752
+12
+0.12280916074947745
+22
+0.1200863739999985
+32
+1.0912264321828118
+13
+0.12280916074947745
+23
+0.1200863739999985
+33
+1.0912264321828118
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.11359374946129114
+20
+0.1320961318119328
+30
+1.0912264321828118
+11
+0.12280916074947745
+21
+0.1200863739999985
+31
+1.0859087104541831
+12
+0.12280916074947745
+22
+0.1200863739999985
+32
+1.0912264321828118
+13
+0.12280916074947745
+23
+0.1200863739999985
+33
+1.0912264321828118
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.0818430358036853
+20
+0.18409908604890202
+30
+1.0588240032604657
+11
+0.09508647761767314
+21
+0.18027301793291245
+31
+1.0018635478066782
+12
+0.08473014550000202
+22
+0.19059339862169217
+32
+1.001863547806677
+13
+0.08473014550000202
+23
+0.19059339862169217
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09508647761767314
+20
+0.18027301793291245
+30
+1.0018635478066782
+11
+0.0818430358036853
+21
+0.18409908604890202
+31
+1.0588240032604657
+12
+0.0903926304890455
+22
+0.1755791708042826
+32
+1.0588240032604657
+13
+0.0903926304890455
+23
+0.1755791708042826
+33
+1.0588240032604657
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10188925895154644
+20
+0.1473497208204092
+30
+1.091226432182813
+11
+0.11359374946129114
+21
+0.1320961318119328
+31
+1.0912264321828118
+12
+0.10766421335770565
+22
+0.13982365371130173
+32
+1.0946480508162637
+13
+0.10766421335770565
+23
+0.13982365371130173
+33
+1.0946480508162637
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.154986207684761
+20
+-2.220446049250313e-15
+30
+1.0912264321828118
+11
+0.14819683336031747
+21
+0.051570417947724545
+31
+1.090997067383562
+12
+0.154986207684761
+22
+-1.1102230246251565e-15
+32
+1.0861010545237688
+13
+0.154986207684761
+23
+-1.1102230246251565e-15
+33
+1.0861010545237688
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.14819683336031747
+20
+0.051570417947724545
+30
+1.090997067383562
+11
+0.154986207684761
+21
+-2.220446049250313e-15
+31
+1.0912264321828118
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.0912264321828118
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.0912264321828118
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.14819683336031747
+20
+0.051570417947724545
+30
+1.090997067383562
+11
+0.14680251974877673
+21
+0.06216128129700765
+31
+1.0912264321828118
+12
+0.14680251974877895
+22
+0.062161281297008764
+32
+1.0852016835471139
+13
+0.14680251974877895
+23
+0.062161281297008764
+33
+1.0852016835471139
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.12280916074947745
+20
+0.1200863739999985
+30
+1.0859087104541831
+11
+0.12777973751198096
+21
+0.10808634016714758
+31
+1.0912264321828118
+12
+0.12280916074947745
+22
+0.1200863739999985
+32
+1.0912264321828118
+13
+0.12280916074947745
+23
+0.1200863739999985
+33
+1.0912264321828118
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.031013385719354247
+20
+0.040277124310847456
+30
+1.2144428615824712
+11
+0.021929775349712632
+21
+0.049329201434111514
+31
+1.2144428615824712
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.03798348510426813
+20
+0.028480227726893792
+30
+1.2144428615824718
+11
+0.031013385719354247
+21
+0.040277124310847456
+31
+1.2144428615824712
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.031013385719354247
+20
+0.040277124310847456
+30
+1.2144428615824712
+11
+0.04236507275000306
+21
+0.09529669931084667
+31
+1.192456946428371
+12
+0.021929775349712632
+22
+0.049329201434111514
+32
+1.2144428615824712
+13
+0.021929775349712632
+23
+0.049329201434111514
+33
+1.2144428615824712
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.04236507275000306
+20
+0.09529669931084667
+30
+1.192456946428371
+11
+0.031013385719354247
+21
+0.040277124310847456
+31
+1.2144428615824712
+12
+0.05991326045397671
+22
+0.07780942916100303
+32
+1.192456946428371
+13
+0.05991326045397671
+23
+0.07780942916100303
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.05991326045397671
+20
+0.1347698846147916
+30
+1.157482406128686
+11
+0.10377281115339276
+21
+0.1347698846147916
+31
+1.1119026978066777
+12
+0.07337845846935548
+22
+0.16505872500000207
+32
+1.1119026978066777
+13
+0.07337845846935548
+23
+0.16505872500000207
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.1347698846147916
+30
+1.1119026978066777
+11
+0.05991326045397671
+21
+0.1347698846147916
+31
+1.157482406128686
+12
+0.08473014550000313
+22
+0.11003915000000175
+32
+1.157482406128686
+13
+0.08473014550000313
+23
+0.11003915000000175
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.07337845846935548
+20
+0.16505872500000207
+30
+1.1119026978066777
+11
+0.0903926304890455
+21
+0.1755791708042826
+31
+1.0588240032604657
+12
+0.0818430358036853
+22
+0.18409908604890202
+32
+1.0588240032604657
+13
+0.0818430358036853
+23
+0.18409908604890202
+33
+1.0588240032604657
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.0903926304890455
+20
+0.1755791708042826
+30
+1.0588240032604657
+11
+0.07337845846935548
+21
+0.16505872500000207
+31
+1.1119026978066777
+12
+0.08492812760476576
+22
+0.17011466792000507
+32
+1.0799005744368184
+13
+0.08492812760476576
+23
+0.17011466792000507
+33
+1.0799005744368184
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476576
+20
+0.17011466792000507
+30
+1.0799005744368184
+11
+0.07337845846935548
+21
+0.16505872500000207
+31
+1.1119026978066777
+12
+0.08492812760476687
+22
+0.16945389754362716
+32
+1.0811770847804012
+13
+0.08492812760476687
+23
+0.16945389754362716
+33
+1.0811770847804012
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476687
+20
+0.16945389754362716
+30
+1.0811770847804012
+11
+0.07337845846935548
+21
+0.16505872500000207
+31
+1.1119026978066777
+12
+0.10188925895154644
+22
+0.1473497208204092
+32
+1.091226432182813
+13
+0.10188925895154644
+23
+0.1473497208204092
+33
+1.091226432182813
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10188925895154644
+20
+0.1473497208204092
+30
+1.091226432182813
+11
+0.07337845846935548
+21
+0.16505872500000207
+31
+1.1119026978066777
+12
+0.10766421335770565
+22
+0.13982365371130173
+32
+1.0946480508162637
+13
+0.10766421335770565
+23
+0.13982365371130173
+33
+1.0946480508162637
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10766421335770565
+20
+0.13982365371130173
+30
+1.0946480508162637
+11
+0.07337845846935548
+21
+0.16505872500000207
+31
+1.1119026978066777
+12
+0.10377281115339276
+22
+0.1347698846147916
+32
+1.1119026978066777
+13
+0.10377281115339276
+23
+0.1347698846147916
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.13165973447285034
+20
+0.09871919888224923
+30
+1.0953774080416923
+11
+0.10377281115339276
+21
+0.1347698846147916
+31
+1.1119026978066777
+12
+0.12709521825000325
+22
+0.09529669931084889
+32
+1.1119026978066777
+13
+0.12709521825000325
+23
+0.09529669931084889
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.1347698846147916
+30
+1.1119026978066777
+11
+0.13165973447285034
+21
+0.09871919888224923
+31
+1.0953774080416923
+12
+0.12777973751198096
+22
+0.10808634016714758
+32
+1.0912264321828118
+13
+0.12777973751198096
+23
+0.10808634016714758
+33
+1.0912264321828118
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.1347698846147916
+30
+1.1119026978066777
+11
+0.12777973751198096
+21
+0.10808634016714758
+31
+1.0912264321828118
+12
+0.12280916074947745
+22
+0.1200863739999985
+32
+1.0859087104541831
+13
+0.12280916074947745
+23
+0.1200863739999985
+33
+1.0859087104541831
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.1347698846147916
+30
+1.1119026978066777
+11
+0.12280916074947745
+21
+0.1200863739999985
+31
+1.0859087104541831
+12
+0.11359374946129114
+22
+0.1320961318119328
+32
+1.0912264321828118
+13
+0.11359374946129114
+23
+0.1320961318119328
+33
+1.0912264321828118
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.1347698846147916
+30
+1.1119026978066777
+11
+0.11359374946129114
+21
+0.1320961318119328
+31
+1.0912264321828118
+12
+0.10766421335770565
+22
+0.13982365371130173
+32
+1.0946480508162637
+13
+0.10766421335770565
+23
+0.13982365371130173
+33
+1.0946480508162637
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29267242474244115
+30
+0.30841453414256254
+11
+0.07279039008472937
+21
+0.28136529499842167
+31
+0.010230022180818192
+12
+2.942091015256665e-15
+22
+0.29088918200000213
+32
+-1.1189627002750058e-15
+13
+2.942091015256665e-15
+23
+0.29088918200000213
+33
+-1.1189627002750058e-15
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.05991326045397671
+20
+0.07780942916100303
+30
+1.192456946428371
+11
+0.05991326045397671
+21
+0.1347698846147916
+31
+1.157482406128686
+12
+0.04236507275000306
+22
+0.09529669931084667
+32
+1.192456946428371
+13
+0.04236507275000306
+23
+0.09529669931084667
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.05991326045397671
+20
+0.1347698846147916
+30
+1.157482406128686
+11
+0.05991326045397671
+21
+0.07780942916100303
+31
+1.192456946428371
+12
+0.08473014550000313
+22
+0.11003915000000175
+32
+1.157482406128686
+13
+0.08473014550000313
+23
+0.11003915000000175
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.07337845846935437
+20
+0.05501957500000143
+30
+1.1924569464283716
+11
+0.08473014550000313
+21
+0.11003915000000175
+31
+1.157482406128686
+12
+0.05991326045397671
+22
+0.07780942916100303
+32
+1.192456946428371
+13
+0.05991326045397671
+23
+0.07780942916100303
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000313
+20
+0.11003915000000175
+30
+1.157482406128686
+11
+0.07337845846935437
+21
+0.05501957500000143
+31
+1.1924569464283716
+12
+0.10377281115339276
+22
+0.07780942916100636
+32
+1.1574824061286866
+13
+0.10377281115339276
+23
+0.07780942916100636
+33
+1.1574824061286866
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.12709521825000325
+20
+0.09529669931084889
+30
+1.1119026978066777
+11
+0.08473014550000313
+21
+0.11003915000000175
+31
+1.157482406128686
+12
+0.10377281115339276
+22
+0.07780942916100636
+32
+1.1574824061286866
+13
+0.10377281115339276
+23
+0.07780942916100636
+33
+1.1574824061286866
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000313
+20
+0.11003915000000175
+30
+1.157482406128686
+11
+0.12709521825000325
+21
+0.09529669931084889
+31
+1.1119026978066777
+12
+0.10377281115339276
+22
+0.1347698846147916
+32
+1.1119026978066777
+13
+0.10377281115339276
+23
+0.1347698846147916
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.03798348510426813
+20
+0.028480227726893792
+30
+1.2144428615824718
+11
+0.05991326045397671
+21
+0.07780942916100303
+31
+1.192456946428371
+12
+0.031013385719354247
+22
+0.040277124310847456
+32
+1.2144428615824712
+13
+0.031013385719354247
+23
+0.040277124310847456
+33
+1.2144428615824712
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.05991326045397671
+20
+0.07780942916100303
+30
+1.192456946428371
+11
+0.03798348510426813
+21
+0.028480227726893792
+31
+1.2144428615824718
+12
+0.07337845846935437
+22
+0.05501957500000143
+32
+1.1924569464283716
+13
+0.07337845846935437
+23
+0.05501957500000143
+33
+1.1924569464283716
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.042365072750004173
+20
+0.01474245068915514
+30
+1.2144428615824718
+11
+0.03798348510426813
+21
+0.028480227726893792
+31
+1.2144428615824718
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.042365072750004173
+20
+0.01474245068915514
+30
+1.2144428615824718
+11
+0.07337845846935437
+21
+0.05501957500000143
+31
+1.1924569464283716
+12
+0.03798348510426813
+22
+0.028480227726893792
+32
+1.2144428615824718
+13
+0.03798348510426813
+23
+0.028480227726893792
+33
+1.2144428615824718
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.07337845846935437
+20
+0.05501957500000143
+30
+1.1924569464283716
+11
+0.042365072750004173
+21
+0.01474245068915514
+31
+1.2144428615824718
+12
+0.08184303580368191
+22
+0.028480227726896012
+32
+1.1924569464283705
+13
+0.08184303580368191
+23
+0.028480227726896012
+33
+1.1924569464283705
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08184303580368191
+20
+0.028480227726896012
+30
+1.1924569464283705
+11
+0.10377281115339276
+21
+0.07780942916100636
+31
+1.1574824061286866
+12
+0.07337845846935437
+22
+0.05501957500000143
+32
+1.1924569464283716
+13
+0.07337845846935437
+23
+0.05501957500000143
+33
+1.1924569464283716
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.07780942916100636
+30
+1.1574824061286866
+11
+0.08184303580368191
+21
+0.028480227726896012
+31
+1.1924569464283705
+12
+0.11574353121935221
+22
+0.04027712431084857
+32
+1.1574824061286866
+13
+0.11574353121935221
+23
+0.04027712431084857
+33
+1.1574824061286866
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1417562962576535
+20
+0.049329201434111514
+30
+1.1119026978066788
+11
+0.10377281115339276
+21
+0.07780942916100636
+31
+1.1574824061286866
+12
+0.11574353121935221
+22
+0.04027712431084857
+32
+1.1574824061286866
+13
+0.11574353121935221
+23
+0.04027712431084857
+33
+1.1574824061286866
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.07780942916100636
+30
+1.1574824061286866
+11
+0.1417562962576535
+21
+0.049329201434111514
+31
+1.1119026978066788
+12
+0.12709521825000325
+22
+0.09529669931084889
+32
+1.1119026978066777
+13
+0.12709521825000325
+23
+0.09529669931084889
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.043859550699416716
+20
+1.1657341758564144e-15
+30
+1.2144428615824712
+11
+0.042365072750004173
+21
+0.01474245068915514
+31
+1.2144428615824718
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.043859550699416716
+20
+1.1657341758564144e-15
+30
+1.2144428615824712
+11
+0.08184303580368191
+21
+0.028480227726896012
+31
+1.1924569464283705
+12
+0.042365072750004173
+22
+0.01474245068915514
+32
+1.2144428615824718
+13
+0.042365072750004173
+23
+0.01474245068915514
+33
+1.2144428615824718
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08184303580368191
+20
+0.028480227726896012
+30
+1.1924569464283705
+11
+0.043859550699416716
+21
+1.1657341758564144e-15
+31
+1.2144428615824712
+12
+0.08473014550000202
+22
+2.275957200481571e-15
+32
+1.192456946428371
+13
+0.08473014550000202
+23
+2.275957200481571e-15
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000202
+20
+2.275957200481571e-15
+30
+1.192456946428371
+11
+0.11574353121935221
+21
+0.04027712431084857
+31
+1.1574824061286866
+12
+0.08184303580368191
+22
+0.028480227726896012
+32
+1.1924569464283705
+13
+0.08184303580368191
+23
+0.028480227726896012
+33
+1.1924569464283705
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.11574353121935221
+20
+0.04027712431084857
+30
+1.1574824061286866
+11
+0.08473014550000202
+21
+2.275957200481571e-15
+31
+1.192456946428371
+12
+0.11982652090794826
+22
+2.275957200481571e-15
+32
+1.157482406128686
+13
+0.11982652090794826
+23
+2.275957200481571e-15
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1417562962576535
+20
+0.049329201434111514
+30
+1.1119026978066788
+11
+0.11982652090794826
+21
+2.275957200481571e-15
+31
+1.157482406128686
+12
+0.14675691693870468
+22
+1.1657341758564144e-15
+32
+1.1119026978066777
+13
+0.14675691693870468
+23
+1.1657341758564144e-15
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.11982652090794826
+20
+2.275957200481571e-15
+30
+1.157482406128686
+11
+0.1417562962576535
+21
+0.049329201434111514
+31
+1.1119026978066788
+12
+0.11574353121935221
+22
+0.04027712431084857
+32
+1.1574824061286866
+13
+0.11574353121935221
+23
+0.04027712431084857
+33
+1.1574824061286866
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.14819683336031747
+20
+0.051570417947724545
+30
+1.090997067383562
+11
+0.14675691693870468
+21
+1.1657341758564144e-15
+31
+1.1119026978066777
+12
+0.154986207684761
+22
+-1.1102230246251565e-15
+32
+1.0861010545237688
+13
+0.154986207684761
+23
+-1.1102230246251565e-15
+33
+1.0861010545237688
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.14675691693870468
+20
+1.1657341758564144e-15
+30
+1.1119026978066777
+11
+0.14819683336031747
+21
+0.051570417947724545
+31
+1.090997067383562
+12
+0.1417562962576535
+22
+0.049329201434111514
+32
+1.1119026978066788
+13
+0.1417562962576535
+23
+0.049329201434111514
+33
+1.1119026978066788
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.04113427580894241
+20
+0.21304527383546001
+30
+1.0018635478066782
+11
+0.043859550699415606
+21
+0.21257931377579353
+31
+1.001863547806677
+12
+0.043859550699414496
+22
+0.21257931377579464
+32
+0.9976509142143398
+13
+0.043859550699414496
+23
+0.21257931377579464
+33
+0.9976509142143398
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.042365072750004173
+20
+0.20533584931084842
+30
+1.0588240032604646
+11
+0.08473014550000202
+21
+0.19059339862169217
+31
+1.001863547806677
+12
+0.043859550699415606
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+0.043859550699415606
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000202
+20
+0.19059339862169217
+30
+1.001863547806677
+11
+0.042365072750004173
+21
+0.20533584931084842
+31
+1.0588240032604646
+12
+0.0818430358036853
+22
+0.18409908604890202
+32
+1.0588240032604657
+13
+0.0818430358036853
+23
+0.18409908604890202
+33
+1.0588240032604657
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.03798348510426813
+20
+0.18409908604890313
+30
+1.1119026978066788
+11
+0.0818430358036853
+21
+0.18409908604890202
+31
+1.0588240032604657
+12
+0.042365072750004173
+22
+0.20533584931084842
+32
+1.0588240032604646
+13
+0.042365072750004173
+23
+0.20533584931084842
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.0818430358036853
+20
+0.18409908604890202
+30
+1.0588240032604657
+11
+0.03798348510426813
+21
+0.18409908604890313
+31
+1.1119026978066788
+12
+0.07337845846935548
+22
+0.16505872500000207
+32
+1.1119026978066777
+13
+0.07337845846935548
+23
+0.16505872500000207
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.03798348510426813
+20
+0.18409908604890313
+30
+1.1119026978066788
+11
+0.05991326045397671
+21
+0.1347698846147916
+31
+1.157482406128686
+12
+0.07337845846935548
+22
+0.16505872500000207
+32
+1.1119026978066777
+13
+0.07337845846935548
+23
+0.16505872500000207
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.05991326045397671
+20
+0.1347698846147916
+30
+1.157482406128686
+11
+0.03798348510426813
+21
+0.18409908604890313
+31
+1.1119026978066788
+12
+0.031013385719353137
+22
+0.1503162743108481
+32
+1.157482406128686
+13
+0.031013385719353137
+23
+0.1503162743108481
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.04236507275000306
+20
+0.09529669931084667
+30
+1.192456946428371
+11
+0.031013385719353137
+21
+0.1503162743108481
+31
+1.157482406128686
+12
+0.021929775349711467
+22
+0.10628965688789677
+32
+1.192456946428371
+13
+0.021929775349711467
+23
+0.10628965688789677
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.031013385719353137
+20
+0.1503162743108481
+30
+1.157482406128686
+11
+0.04236507275000306
+21
+0.09529669931084667
+31
+1.192456946428371
+12
+0.05991326045397671
+22
+0.1347698846147916
+32
+1.157482406128686
+13
+0.05991326045397671
+23
+0.1347698846147916
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.021929775349712632
+20
+0.049329201434111514
+30
+1.2144428615824712
+11
+0.021929775349711467
+21
+0.10628965688789677
+31
+1.192456946428371
+12
+0.011351687030651703
+22
+0.05501957500000032
+32
+1.2144428615824712
+13
+0.011351687030651703
+23
+0.05501957500000032
+33
+1.2144428615824712
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.021929775349711467
+20
+0.10628965688789677
+30
+1.192456946428371
+11
+0.021929775349712632
+21
+0.049329201434111514
+31
+1.2144428615824712
+12
+0.04236507275000306
+22
+0.09529669931084667
+32
+1.192456946428371
+13
+0.04236507275000306
+23
+0.09529669931084667
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.021929775349712632
+20
+0.049329201434111514
+30
+1.2144428615824712
+11
+0.011351687030651703
+21
+0.05501957500000032
+31
+1.2144428615824712
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.21257931377579575
+30
+1.0588240032604646
+11
+0.04113427580894241
+21
+0.21304527383546001
+31
+1.0018635478066782
+12
+1.7763568394002505e-15
+22
+0.22007830000000128
+32
+1.001863547806677
+13
+1.7763568394002505e-15
+23
+0.22007830000000128
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.04113427580894241
+20
+0.21304527383546001
+30
+1.0018635478066782
+11
+0.042365072750004173
+21
+0.20533584931084842
+31
+1.0588240032604646
+12
+0.043859550699415606
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+0.043859550699415606
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.042365072750004173
+20
+0.20533584931084842
+30
+1.0588240032604646
+11
+0.04113427580894241
+21
+0.21304527383546001
+31
+1.0018635478066782
+12
+2.942091015256665e-15
+22
+0.21257931377579575
+32
+1.0588240032604646
+13
+2.942091015256665e-15
+23
+0.21257931377579575
+33
+1.0588240032604646
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.19059339862169555
+30
+1.1119026978066777
+11
+0.042365072750004173
+21
+0.20533584931084842
+31
+1.0588240032604646
+12
+2.942091015256665e-15
+22
+0.21257931377579575
+32
+1.0588240032604646
+13
+2.942091015256665e-15
+23
+0.21257931377579575
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.042365072750004173
+20
+0.20533584931084842
+30
+1.0588240032604646
+11
+2.942091015256665e-15
+21
+0.19059339862169555
+31
+1.1119026978066777
+12
+0.03798348510426813
+22
+0.18409908604890313
+32
+1.1119026978066788
+13
+0.03798348510426813
+23
+0.18409908604890313
+33
+1.1119026978066788
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+1.7763568394002505e-15
+20
+0.15561885832200822
+30
+1.157482406128686
+11
+0.03798348510426813
+21
+0.18409908604890313
+31
+1.1119026978066788
+12
+2.942091015256665e-15
+22
+0.19059339862169555
+32
+1.1119026978066777
+13
+2.942091015256665e-15
+23
+0.19059339862169555
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.03798348510426813
+20
+0.18409908604890313
+30
+1.1119026978066788
+11
+1.7763568394002505e-15
+21
+0.15561885832200822
+31
+1.157482406128686
+12
+0.031013385719353137
+22
+0.1503162743108481
+32
+1.157482406128686
+13
+0.031013385719353137
+23
+0.1503162743108481
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.11003915000000064
+30
+1.1924569464283716
+11
+0.031013385719353137
+21
+0.1503162743108481
+31
+1.157482406128686
+12
+1.7763568394002505e-15
+22
+0.15561885832200822
+32
+1.157482406128686
+13
+1.7763568394002505e-15
+23
+0.15561885832200822
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.031013385719353137
+20
+0.1503162743108481
+30
+1.157482406128686
+11
+2.942091015256665e-15
+21
+0.11003915000000064
+31
+1.1924569464283716
+12
+0.021929775349711467
+22
+0.10628965688789677
+32
+1.192456946428371
+13
+0.021929775349711467
+23
+0.10628965688789677
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.011351687030651703
+20
+0.05501957500000032
+30
+1.2144428615824712
+11
+2.942091015256665e-15
+21
+0.11003915000000064
+31
+1.1924569464283716
+12
+1.7763568394002505e-15
+22
+0.05696045545378753
+32
+1.2144428615824712
+13
+1.7763568394002505e-15
+23
+0.05696045545378753
+33
+1.2144428615824712
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.11003915000000064
+30
+1.1924569464283716
+11
+0.011351687030651703
+21
+0.05501957500000032
+31
+1.2144428615824712
+12
+0.021929775349711467
+22
+0.10628965688789677
+32
+1.192456946428371
+13
+0.021929775349711467
+23
+0.10628965688789677
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.011351687030651703
+20
+0.05501957500000032
+30
+1.2144428615824712
+11
+1.7763568394002505e-15
+21
+0.05696045545378753
+31
+1.2144428615824712
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+1.7763568394002505e-15
+21
+0.05696045545378753
+31
+1.2144428615824712
+12
+-0.014742450689149977
+22
+0.05501957500000032
+32
+1.2144428615824718
+13
+-0.014742450689149977
+23
+0.05501957500000032
+33
+1.2144428615824718
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.19059339862169328
+30
+1.0018635478066782
+11
+-0.055019574999997406
+21
+0.20533584931084842
+31
+1.0588240032604657
+12
+-0.056960455453783476
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+-0.056960455453783476
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999997406
+20
+0.20533584931084842
+30
+1.0588240032604657
+11
+-0.11003914999999548
+21
+0.19059339862169328
+31
+1.0018635478066782
+12
+-0.10628965688789382
+22
+0.18409908604890313
+32
+1.0588240032604646
+13
+-0.10628965688789382
+23
+0.18409908604890313
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.09529669931084372
+20
+0.16505872500000096
+30
+1.1119026978066777
+11
+-0.055019574999997406
+21
+0.20533584931084842
+31
+1.0588240032604657
+12
+-0.10628965688789382
+22
+0.18409908604890313
+32
+1.0588240032604646
+13
+-0.10628965688789382
+23
+0.18409908604890313
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999997406
+20
+0.20533584931084842
+30
+1.0588240032604657
+11
+-0.09529669931084372
+21
+0.16505872500000096
+31
+1.1119026978066777
+12
+-0.049329201434107434
+22
+0.18409908604890313
+32
+1.1119026978066777
+13
+-0.049329201434107434
+23
+0.18409908604890313
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.0778094291610012
+20
+0.13476988461479278
+30
+1.157482406128686
+11
+-0.049329201434107434
+21
+0.18409908604890313
+31
+1.1119026978066777
+12
+-0.09529669931084372
+22
+0.16505872500000096
+32
+1.1119026978066777
+13
+-0.09529669931084372
+23
+0.16505872500000096
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.049329201434107434
+20
+0.18409908604890313
+30
+1.1119026978066777
+11
+-0.0778094291610012
+21
+0.13476988461479278
+31
+1.157482406128686
+12
+-0.040277124310843404
+22
+0.1503162743108481
+32
+1.157482406128686
+13
+-0.040277124310843404
+23
+0.1503162743108481
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999996296
+20
+0.09529669931084778
+30
+1.192456946428371
+11
+-0.040277124310843404
+21
+0.1503162743108481
+31
+1.157482406128686
+12
+-0.0778094291610012
+22
+0.13476988461479278
+32
+1.157482406128686
+13
+-0.0778094291610012
+23
+0.13476988461479278
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.040277124310843404
+20
+0.1503162743108481
+30
+1.157482406128686
+11
+-0.055019574999996296
+21
+0.09529669931084778
+31
+1.192456946428371
+12
+-0.028480227726888574
+22
+0.10628965688789788
+32
+1.192456946428371
+13
+-0.028480227726888574
+23
+0.10628965688789788
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.02848022772688974
+20
+0.049329201434111514
+30
+1.2144428615824712
+11
+-0.028480227726888574
+21
+0.10628965688789788
+31
+1.192456946428371
+12
+-0.055019574999996296
+22
+0.09529669931084778
+32
+1.192456946428371
+13
+-0.055019574999996296
+23
+0.09529669931084778
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.028480227726888574
+20
+0.10628965688789788
+30
+1.192456946428371
+11
+-0.02848022772688974
+21
+0.049329201434111514
+31
+1.2144428615824712
+12
+-0.014742450689149977
+22
+0.05501957500000032
+32
+1.2144428615824718
+13
+-0.014742450689149977
+23
+0.05501957500000032
+33
+1.2144428615824718
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+-0.014742450689149977
+21
+0.05501957500000032
+31
+1.2144428615824718
+12
+-0.02848022772688974
+22
+0.049329201434111514
+32
+1.2144428615824712
+13
+-0.02848022772688974
+23
+0.049329201434111514
+33
+1.2144428615824712
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.20538343774009993
+20
+1.1657341758564144e-15
+30
+0.7479729991936949
+11
+0.16685114483332258
+21
+0.06753329419776638
+31
+0.8075348555246178
+12
+0.17574207168476297
+22
+0.0
+32
+0.7937915750752708
+13
+0.17574207168476297
+23
+0.0
+33
+0.7937915750752708
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.16685114483332258
+20
+0.06753329419776638
+30
+0.8075348555246178
+11
+0.20538343774009993
+21
+1.1657341758564144e-15
+31
+0.7479729991936949
+12
+0.19765914773897608
+22
+0.05953197480025596
+32
+0.7599129336382517
+13
+0.19765914773897608
+23
+0.05953197480025596
+33
+0.7599129336382517
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.16685114483332258
+20
+0.06753329419776638
+30
+0.8075348555246178
+11
+0.19765914773897608
+21
+0.05953197480025596
+31
+0.7599129336382517
+12
+0.1752009048041535
+22
+0.11429416310676693
+32
+0.7946280917100798
+13
+0.1752009048041535
+23
+0.11429416310676693
+33
+0.7946280917100798
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.16685114483332258
+20
+0.06753329419776638
+30
+0.8075348555246178
+11
+0.1752009048041535
+21
+0.11429416310676693
+31
+0.7946280917100798
+12
+0.1407842662509724
+22
+0.13046430599999947
+32
+0.8478281150218822
+13
+0.1407842662509724
+23
+0.13046430599999947
+33
+0.8478281150218822
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999947
+30
+0.8478281150218822
+11
+0.1752009048041535
+21
+0.11429416310676693
+31
+0.7946280917100798
+12
+0.14004304520099842
+22
+0.16005831690802014
+32
+0.8489738683201561
+13
+0.14004304520099842
+23
+0.16005831690802014
+33
+0.8489738683201561
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999947
+30
+0.8478281150218822
+11
+0.14004304520099842
+21
+0.16005831690802014
+31
+0.8489738683201561
+12
+0.09931785063555287
+22
+0.1845043909507933
+32
+0.9119254345200819
+13
+0.09931785063555287
+23
+0.1845043909507933
+33
+0.9119254345200819
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555287
+20
+0.1845043909507933
+30
+0.9119254345200819
+11
+0.14004304520099842
+21
+0.16005831690802014
+31
+0.8489738683201561
+12
+0.09524177069161455
+22
+0.193567791051381
+32
+0.9182260948156299
+13
+0.09524177069161455
+23
+0.193567791051381
+33
+0.9182260948156299
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555287
+20
+0.1845043909507933
+30
+0.9119254345200819
+11
+0.09524177069161455
+21
+0.193567791051381
+31
+0.9182260948156299
+12
+0.08473014550000091
+22
+0.19059339862169328
+32
+0.9344745934705629
+13
+0.08473014550000091
+23
+0.19059339862169328
+33
+0.9344745934705629
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000091
+20
+0.19059339862169328
+30
+0.9344745934705629
+11
+0.09524177069161455
+21
+0.193567791051381
+31
+0.9182260948156299
+12
+0.043859550699414496
+22
+0.21257931377579464
+32
+0.9976509142143398
+13
+0.043859550699414496
+23
+0.21257931377579464
+33
+0.9976509142143398
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.043859550699414496
+20
+0.21257931377579464
+30
+0.9976509142143398
+11
+0.09524177069161455
+21
+0.193567791051381
+31
+0.9182260948156299
+12
+0.044467883797984775
+22
+0.21278370795076884
+32
+0.9967105744140091
+13
+0.044467883797984775
+23
+0.21278370795076884
+33
+0.9967105744140091
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.043859550699414496
+20
+0.21257931377579464
+30
+0.9976509142143398
+11
+0.044467883797984775
+21
+0.21278370795076884
+31
+0.9967105744140091
+12
+0.04113427580894241
+22
+0.21304527383546001
+32
+1.0018635478066782
+13
+0.04113427580894241
+23
+0.21304527383546001
+33
+1.0018635478066782
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.1503162743108418
+20
+0.1503162743108492
+30
+1.0588240032604646
+11
+-0.11003914999999548
+21
+0.19059339862169328
+31
+1.0018635478066782
+12
+-0.15561885832200195
+22
+0.1556188583220094
+32
+1.001863547806677
+13
+-0.15561885832200195
+23
+0.1556188583220094
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.19059339862169328
+30
+1.0018635478066782
+11
+-0.1503162743108418
+21
+0.1503162743108492
+31
+1.0588240032604646
+12
+-0.10628965688789382
+22
+0.18409908604890313
+32
+1.0588240032604646
+13
+-0.10628965688789382
+23
+0.18409908604890313
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.13476988461478534
+20
+0.13476988461479278
+30
+1.1119026978066777
+11
+-0.10628965688789382
+21
+0.18409908604890313
+31
+1.0588240032604646
+12
+-0.1503162743108418
+22
+0.1503162743108492
+32
+1.0588240032604646
+13
+-0.1503162743108418
+23
+0.1503162743108492
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.10628965688789382
+20
+0.18409908604890313
+30
+1.0588240032604646
+11
+-0.13476988461478534
+21
+0.13476988461479278
+31
+1.1119026978066777
+12
+-0.09529669931084372
+22
+0.16505872500000096
+32
+1.1119026978066777
+13
+-0.09529669931084372
+23
+0.16505872500000096
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.11003915000000175
+30
+1.157482406128686
+11
+-0.09529669931084372
+21
+0.16505872500000096
+31
+1.1119026978066777
+12
+-0.13476988461478534
+22
+0.13476988461479278
+32
+1.1119026978066777
+13
+-0.13476988461478534
+23
+0.13476988461479278
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.09529669931084372
+20
+0.16505872500000096
+30
+1.1119026978066777
+11
+-0.11003914999999548
+21
+0.11003915000000175
+31
+1.157482406128686
+12
+-0.0778094291610012
+22
+0.13476988461479278
+32
+1.157482406128686
+13
+-0.0778094291610012
+23
+0.13476988461479278
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.07780942916099784
+20
+0.07780942916100525
+30
+1.192456946428371
+11
+-0.0778094291610012
+21
+0.13476988461479278
+31
+1.157482406128686
+12
+-0.11003914999999548
+22
+0.11003915000000175
+32
+1.157482406128686
+13
+-0.11003914999999548
+23
+0.11003915000000175
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.0778094291610012
+20
+0.13476988461479278
+30
+1.157482406128686
+11
+-0.07780942916099784
+21
+0.07780942916100525
+31
+1.192456946428371
+12
+-0.055019574999996296
+22
+0.09529669931084778
+32
+1.192456946428371
+13
+-0.055019574999996296
+23
+0.09529669931084778
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.040277124310841184
+20
+0.04027712431084857
+30
+1.2144428615824712
+11
+-0.055019574999996296
+21
+0.09529669931084778
+31
+1.192456946428371
+12
+-0.07780942916099784
+22
+0.07780942916100525
+32
+1.192456946428371
+13
+-0.07780942916099784
+23
+0.07780942916100525
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999996296
+20
+0.09529669931084778
+30
+1.192456946428371
+11
+-0.040277124310841184
+21
+0.04027712431084857
+31
+1.2144428615824712
+12
+-0.02848022772688974
+22
+0.049329201434111514
+32
+1.2144428615824712
+13
+-0.02848022772688974
+23
+0.049329201434111514
+33
+1.2144428615824712
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+-0.02848022772688974
+21
+0.049329201434111514
+31
+1.2144428615824712
+12
+-0.040277124310841184
+22
+0.04027712431084857
+32
+1.2144428615824712
+13
+-0.040277124310841184
+23
+0.04027712431084857
+33
+1.2144428615824712
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.1503162743108418
+20
+0.1503162743108492
+30
+1.0588240032604646
+11
+-0.190593398621687
+21
+0.11003915000000292
+31
+1.001863547806677
+12
+-0.1840990860488957
+22
+0.10628965688789899
+32
+1.0588240032604646
+13
+-0.1840990860488957
+23
+0.10628965688789899
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.190593398621687
+20
+0.11003915000000292
+30
+1.001863547806677
+11
+-0.1503162743108418
+21
+0.1503162743108492
+31
+1.0588240032604646
+12
+-0.15561885832200195
+22
+0.1556188583220094
+32
+1.001863547806677
+13
+-0.15561885832200195
+23
+0.1556188583220094
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.13476988461478534
+20
+0.13476988461479278
+30
+1.1119026978066777
+11
+-0.1840990860488957
+21
+0.10628965688789899
+31
+1.0588240032604646
+12
+-0.1650587249999958
+22
+0.09529669931084889
+32
+1.1119026978066788
+13
+-0.1650587249999958
+23
+0.09529669931084889
+33
+1.1119026978066788
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.1840990860488957
+20
+0.10628965688789899
+30
+1.0588240032604646
+11
+-0.13476988461478534
+21
+0.13476988461479278
+31
+1.1119026978066777
+12
+-0.1503162743108418
+22
+0.1503162743108492
+32
+1.0588240032604646
+13
+-0.1503162743108418
+23
+0.1503162743108492
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.11003915000000175
+30
+1.157482406128686
+11
+-0.1650587249999958
+21
+0.09529669931084889
+31
+1.1119026978066788
+12
+-0.13476988461478534
+22
+0.07780942916100525
+32
+1.157482406128686
+13
+-0.13476988461478534
+23
+0.07780942916100525
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.1650587249999958
+20
+0.09529669931084889
+30
+1.1119026978066788
+11
+-0.11003914999999548
+21
+0.11003915000000175
+31
+1.157482406128686
+12
+-0.13476988461478534
+22
+0.13476988461479278
+32
+1.1119026978066777
+13
+-0.13476988461478534
+23
+0.13476988461479278
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.09529669931084037
+20
+0.05501957500000143
+30
+1.1924569464283716
+11
+-0.11003914999999548
+21
+0.11003915000000175
+31
+1.157482406128686
+12
+-0.13476988461478534
+22
+0.07780942916100525
+32
+1.157482406128686
+13
+-0.13476988461478534
+23
+0.07780942916100525
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.11003915000000175
+30
+1.157482406128686
+11
+-0.09529669931084037
+21
+0.05501957500000143
+31
+1.1924569464283716
+12
+-0.07780942916099784
+22
+0.07780942916100525
+32
+1.192456946428371
+13
+-0.07780942916099784
+23
+0.07780942916100525
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.04932920143410521
+20
+0.028480227726896012
+30
+1.2144428615824718
+11
+-0.07780942916099784
+21
+0.07780942916100525
+31
+1.192456946428371
+12
+-0.09529669931084037
+22
+0.05501957500000143
+32
+1.1924569464283716
+13
+-0.09529669931084037
+23
+0.05501957500000143
+33
+1.1924569464283716
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.07780942916099784
+20
+0.07780942916100525
+30
+1.192456946428371
+11
+-0.04932920143410521
+21
+0.028480227726896012
+31
+1.2144428615824718
+12
+-0.040277124310841184
+22
+0.04027712431084857
+32
+1.2144428615824712
+13
+-0.040277124310841184
+23
+0.04027712431084857
+33
+1.2144428615824712
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+-0.040277124310841184
+21
+0.04027712431084857
+31
+1.2144428615824712
+12
+-0.04932920143410521
+22
+0.028480227726896012
+32
+1.2144428615824718
+13
+-0.04932920143410521
+23
+0.028480227726896012
+33
+1.2144428615824718
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.1840990860488957
+20
+0.10628965688789899
+30
+1.0588240032604646
+11
+-0.21257931377578831
+21
+0.05696045545378753
+31
+1.0018635478066782
+12
+-0.20533584931084325
+22
+0.05501957500000143
+32
+1.0588240032604646
+13
+-0.20533584931084325
+23
+0.05501957500000143
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.21257931377578831
+20
+0.05696045545378753
+30
+1.0018635478066782
+11
+-0.1840990860488957
+21
+0.10628965688789899
+31
+1.0588240032604646
+12
+-0.190593398621687
+22
+0.11003915000000292
+32
+1.001863547806677
+13
+-0.190593398621687
+23
+0.11003915000000292
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.1650587249999958
+20
+0.09529669931084889
+30
+1.1119026978066788
+11
+-0.20533584931084325
+21
+0.05501957500000143
+31
+1.0588240032604646
+12
+-0.18409908604889683
+22
+0.049329201434111514
+32
+1.1119026978066777
+13
+-0.18409908604889683
+23
+0.049329201434111514
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.20533584931084325
+20
+0.05501957500000143
+30
+1.0588240032604646
+11
+-0.1650587249999958
+21
+0.09529669931084889
+31
+1.1119026978066788
+12
+-0.1840990860488957
+22
+0.10628965688789899
+32
+1.0588240032604646
+13
+-0.1840990860488957
+23
+0.10628965688789899
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.13476988461478534
+20
+0.07780942916100525
+30
+1.157482406128686
+11
+-0.18409908604889683
+21
+0.049329201434111514
+31
+1.1119026978066777
+12
+-0.15031627431084293
+22
+0.040277124310846346
+32
+1.157482406128686
+13
+-0.15031627431084293
+23
+0.040277124310846346
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.18409908604889683
+20
+0.049329201434111514
+30
+1.1119026978066777
+11
+-0.13476988461478534
+21
+0.07780942916100525
+31
+1.157482406128686
+12
+-0.1650587249999958
+22
+0.09529669931084889
+32
+1.1119026978066788
+13
+-0.1650587249999958
+23
+0.09529669931084889
+33
+1.1119026978066788
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.10628965688789271
+20
+0.028480227726893792
+30
+1.192456946428371
+11
+-0.13476988461478534
+21
+0.07780942916100525
+31
+1.157482406128686
+12
+-0.15031627431084293
+22
+0.040277124310846346
+32
+1.157482406128686
+13
+-0.15031627431084293
+23
+0.040277124310846346
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.13476988461478534
+20
+0.07780942916100525
+30
+1.157482406128686
+11
+-0.10628965688789271
+21
+0.028480227726893792
+31
+1.192456946428371
+12
+-0.09529669931084037
+22
+0.05501957500000143
+32
+1.1924569464283716
+13
+-0.09529669931084037
+23
+0.05501957500000143
+33
+1.1924569464283716
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999996296
+20
+0.01474245068915292
+30
+1.2144428615824712
+11
+-0.09529669931084037
+21
+0.05501957500000143
+31
+1.1924569464283716
+12
+-0.10628965688789271
+22
+0.028480227726893792
+32
+1.192456946428371
+13
+-0.10628965688789271
+23
+0.028480227726893792
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.09529669931084037
+20
+0.05501957500000143
+30
+1.1924569464283716
+11
+-0.055019574999996296
+21
+0.01474245068915292
+31
+1.2144428615824712
+12
+-0.04932920143410521
+22
+0.028480227726896012
+32
+1.2144428615824718
+13
+-0.04932920143410521
+23
+0.028480227726896012
+33
+1.2144428615824718
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+-0.04932920143410521
+21
+0.028480227726896012
+31
+1.2144428615824718
+12
+-0.055019574999996296
+22
+0.01474245068915292
+32
+1.2144428615824712
+13
+-0.055019574999996296
+23
+0.01474245068915292
+33
+1.2144428615824712
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.20533584931084325
+20
+0.05501957500000143
+30
+1.0588240032604646
+11
+-0.22007829999999612
+21
+-2.220446049250313e-15
+31
+1.0018635478066782
+12
+-0.21257931377578945
+22
+-2.220446049250313e-15
+32
+1.0588240032604646
+13
+-0.21257931377578945
+23
+-2.220446049250313e-15
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.22007829999999612
+20
+-2.220446049250313e-15
+30
+1.0018635478066782
+11
+-0.20533584931084325
+21
+0.05501957500000143
+31
+1.0588240032604646
+12
+-0.21257931377578831
+22
+0.05696045545378753
+32
+1.0018635478066782
+13
+-0.21257931377578831
+23
+0.05696045545378753
+33
+1.0018635478066782
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.18409908604889683
+20
+0.049329201434111514
+30
+1.1119026978066777
+11
+-0.21257931377578945
+21
+-2.220446049250313e-15
+31
+1.0588240032604646
+12
+-0.19059339862168925
+22
+-3.3306690738754696e-15
+32
+1.1119026978066788
+13
+-0.19059339862168925
+23
+-3.3306690738754696e-15
+33
+1.1119026978066788
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.21257931377578945
+20
+-2.220446049250313e-15
+30
+1.0588240032604646
+11
+-0.18409908604889683
+21
+0.049329201434111514
+31
+1.1119026978066777
+12
+-0.20533584931084325
+22
+0.05501957500000143
+32
+1.0588240032604646
+13
+-0.20533584931084325
+23
+0.05501957500000143
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.1556188583220042
+20
+-2.220446049250313e-15
+30
+1.1574824061286855
+11
+-0.18409908604889683
+21
+0.049329201434111514
+31
+1.1119026978066777
+12
+-0.19059339862168925
+22
+-3.3306690738754696e-15
+32
+1.1119026978066788
+13
+-0.19059339862168925
+23
+-3.3306690738754696e-15
+33
+1.1119026978066788
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.18409908604889683
+20
+0.049329201434111514
+30
+1.1119026978066777
+11
+-0.1556188583220042
+21
+-2.220446049250313e-15
+31
+1.1574824061286855
+12
+-0.15031627431084293
+22
+0.040277124310846346
+32
+1.157482406128686
+13
+-0.15031627431084293
+23
+0.040277124310846346
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999659
+20
+-2.220446049250313e-15
+30
+1.1924569464283716
+11
+-0.15031627431084293
+21
+0.040277124310846346
+31
+1.157482406128686
+12
+-0.1556188583220042
+22
+-2.220446049250313e-15
+32
+1.1574824061286855
+13
+-0.1556188583220042
+23
+-2.220446049250313e-15
+33
+1.1574824061286855
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.15031627431084293
+20
+0.040277124310846346
+30
+1.157482406128686
+11
+-0.11003914999999659
+21
+-2.220446049250313e-15
+31
+1.1924569464283716
+12
+-0.10628965688789271
+22
+0.028480227726893792
+32
+1.192456946428371
+13
+-0.10628965688789271
+23
+0.028480227726893792
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.05696045545378234
+20
+-3.3306690738754696e-15
+30
+1.2144428615824718
+11
+-0.10628965688789271
+21
+0.028480227726893792
+31
+1.192456946428371
+12
+-0.11003914999999659
+22
+-2.220446049250313e-15
+32
+1.1924569464283716
+13
+-0.11003914999999659
+23
+-2.220446049250313e-15
+33
+1.1924569464283716
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.10628965688789271
+20
+0.028480227726893792
+30
+1.192456946428371
+11
+-0.05696045545378234
+21
+-3.3306690738754696e-15
+31
+1.2144428615824718
+12
+-0.055019574999996296
+22
+0.01474245068915292
+32
+1.2144428615824712
+13
+-0.055019574999996296
+23
+0.01474245068915292
+33
+1.2144428615824712
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+-0.055019574999996296
+21
+0.01474245068915292
+31
+1.2144428615824712
+12
+-0.05696045545378234
+22
+-3.3306690738754696e-15
+32
+1.2144428615824718
+13
+-0.05696045545378234
+23
+-3.3306690738754696e-15
+33
+1.2144428615824718
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.043859550699414496
+20
+0.21257931377579464
+30
+0.9976509142143398
+11
+0.08473014550000202
+21
+0.19059339862169217
+31
+1.001863547806677
+12
+0.08473014550000091
+22
+0.19059339862169328
+32
+0.9344745934705629
+13
+0.08473014550000091
+23
+0.19059339862169328
+33
+0.9344745934705629
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000202
+20
+0.19059339862169217
+30
+1.001863547806677
+11
+0.043859550699414496
+21
+0.21257931377579464
+31
+0.9976509142143398
+12
+0.043859550699415606
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+0.043859550699415606
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+1.7763568394002505e-15
+20
+0.22007830000000128
+30
+1.001863547806677
+11
+0.044467883797984775
+21
+0.21278370795076884
+31
+0.9967105744140091
+12
+0.07586512499733417
+22
+0.2233328844240816
+32
+0.7307557071160136
+13
+0.07586512499733417
+23
+0.2233328844240816
+33
+0.7307557071160136
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.044467883797984775
+20
+0.21278370795076884
+30
+0.9967105744140091
+11
+1.7763568394002505e-15
+21
+0.22007830000000128
+31
+1.001863547806677
+12
+0.04113427580894241
+22
+0.21304527383546001
+32
+1.0018635478066782
+13
+0.04113427580894241
+23
+0.21304527383546001
+33
+1.0018635478066782
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29267242474244115
+30
+0.30841453414256254
+11
+0.0752960226550266
+21
+0.28014261634080284
+31
+0.010582165873702443
+12
+0.07279039008472937
+22
+0.28136529499842167
+32
+0.010230022180818192
+13
+0.07279039008472937
+23
+0.28136529499842167
+33
+0.010230022180818192
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.0752960226550266
+20
+0.28014261634080284
+30
+0.010582165873702443
+11
+2.942091015256665e-15
+21
+0.29267242474244115
+31
+0.30841453414256254
+12
+0.07586512499733417
+22
+0.2233328844240816
+32
+0.7307557071160136
+13
+0.07586512499733417
+23
+0.2233328844240816
+33
+0.7307557071160136
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+1.7763568394002505e-15
+20
+0.22007830000000128
+30
+1.001863547806677
+11
+0.07586512499733417
+21
+0.2233328844240816
+31
+0.7307557071160136
+12
+2.942091015256665e-15
+22
+0.29267242474244115
+32
+0.30841453414256254
+13
+2.942091015256665e-15
+23
+0.29267242474244115
+33
+0.30841453414256254
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.19059339862169328
+30
+1.0018635478066782
+11
+-0.07574919749967438
+21
+0.2826998537013695
+31
+0.30841453414256254
+12
+-0.1463362123712171
+22
+0.253461754814145
+32
+0.30841453414256254
+13
+-0.1463362123712171
+23
+0.253461754814145
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.07574919749967438
+20
+0.2826998537013695
+30
+0.30841453414256254
+11
+-0.11003914999999548
+21
+0.19059339862169328
+31
+1.0018635478066782
+12
+-0.056960455453783476
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+-0.056960455453783476
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.20568971316600607
+20
+0.20717595716186143
+30
+0.20568971316600676
+11
+-0.1463362123712171
+21
+0.253461754814145
+31
+0.30841453414256254
+12
+-0.14586628805175494
+22
+0.25264782201712543
+32
+0.14586628805175564
+13
+-0.14586628805175494
+23
+0.25264782201712543
+33
+0.14586628805175564
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.1463362123712171
+20
+0.253461754814145
+30
+0.30841453414256254
+11
+-0.20568971316600607
+21
+0.20717595716186143
+31
+0.20568971316600676
+12
+-0.20653412136710422
+22
+0.2065341213671094
+32
+0.20653412136710492
+13
+-0.20653412136710422
+23
+0.2065341213671094
+33
+0.20653412136710492
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.1463362123712171
+20
+0.253461754814145
+30
+0.30841453414256254
+11
+-0.20653412136710422
+21
+0.2065341213671094
+31
+0.20653412136710492
+12
+-0.20695065620168485
+22
+0.2069506562016934
+32
+0.30841453414256254
+13
+-0.20695065620168485
+23
+0.2069506562016934
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.15561885832200195
+20
+0.1556188583220094
+30
+1.001863547806677
+11
+-0.1463362123712171
+21
+0.253461754814145
+31
+0.30841453414256254
+12
+-0.20695065620168485
+22
+0.2069506562016934
+32
+0.30841453414256254
+13
+-0.20695065620168485
+23
+0.2069506562016934
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.1463362123712171
+20
+0.253461754814145
+30
+0.30841453414256254
+11
+-0.15561885832200195
+21
+0.1556188583220094
+31
+1.001863547806677
+12
+-0.11003914999999548
+22
+0.19059339862169328
+32
+1.0018635478066782
+13
+-0.11003914999999548
+23
+0.19059339862169328
+33
+1.0018635478066782
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.15561885832200195
+20
+0.1556188583220094
+30
+1.001863547806677
+11
+-0.2534617548141387
+21
+0.1463362123712234
+31
+0.30841453414256254
+12
+-0.190593398621687
+22
+0.11003915000000292
+32
+1.001863547806677
+13
+-0.190593398621687
+23
+0.11003915000000292
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.2534617548141387
+20
+0.1463362123712234
+30
+0.30841453414256254
+11
+-0.15561885832200195
+21
+0.1556188583220094
+31
+1.001863547806677
+12
+-0.20695065620168485
+22
+0.2069506562016934
+32
+0.30841453414256254
+13
+-0.20695065620168485
+23
+0.2069506562016934
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.190593398621687
+20
+0.11003915000000292
+30
+1.001863547806677
+11
+-0.2826998537013644
+21
+0.07574919749967957
+31
+0.30841453414256254
+12
+-0.21257931377578831
+22
+0.05696045545378753
+32
+1.0018635478066782
+13
+-0.21257931377578831
+23
+0.05696045545378753
+33
+1.0018635478066782
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.2826998537013644
+20
+0.07574919749967957
+30
+0.30841453414256254
+11
+-0.190593398621687
+21
+0.11003915000000292
+31
+1.001863547806677
+12
+-0.2534617548141387
+22
+0.1463362123712234
+32
+0.30841453414256254
+13
+-0.2534617548141387
+23
+0.1463362123712234
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.21257931377578831
+20
+0.05696045545378753
+30
+1.0018635478066782
+11
+-0.29267242474243715
+21
+-1.1102230246251565e-15
+31
+0.30841453414256254
+12
+-0.22007829999999612
+22
+-2.220446049250313e-15
+32
+1.0018635478066782
+13
+-0.22007829999999612
+23
+-2.220446049250313e-15
+33
+1.0018635478066782
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.29267242474243715
+20
+-1.1102230246251565e-15
+30
+0.30841453414256254
+11
+-0.21257931377578831
+21
+0.05696045545378753
+31
+1.0018635478066782
+12
+-0.2826998537013644
+22
+0.07574919749967957
+32
+0.30841453414256254
+13
+-0.2826998537013644
+23
+0.07574919749967957
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.07586512499733417
+20
+0.2233328844240816
+30
+0.7307557071160136
+11
+0.14352399544263056
+21
+0.2511284049735225
+31
+0.02017098211932512
+12
+0.0752960226550266
+22
+0.28014261634080284
+32
+0.010582165873702443
+13
+0.0752960226550266
+23
+0.28014261634080284
+33
+0.010582165873702443
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.07540049589488734
+20
+0.2813984815956233
+30
+0.07540049589488913
+11
+2.942091015256665e-15
+21
+0.29267242474244115
+31
+0.30841453414256254
+12
+2.942091015256665e-15
+22
+0.29088918200000213
+32
+-1.1189627002750058e-15
+13
+2.942091015256665e-15
+23
+0.29088918200000213
+33
+-1.1189627002750058e-15
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29267242474244115
+30
+0.30841453414256254
+11
+-0.07540049589488734
+21
+0.2813984815956233
+31
+0.07540049589488913
+12
+-0.07574919749967438
+22
+0.2826998537013695
+32
+0.30841453414256254
+13
+-0.07574919749967438
+23
+0.2826998537013695
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.028480227726888574
+20
+0.10628965688789788
+30
+1.192456946428371
+11
+1.7763568394002505e-15
+21
+0.15561885832200822
+31
+1.157482406128686
+12
+-0.040277124310843404
+22
+0.1503162743108481
+32
+1.157482406128686
+13
+-0.040277124310843404
+23
+0.1503162743108481
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+1.7763568394002505e-15
+20
+0.15561885832200822
+30
+1.157482406128686
+11
+-0.028480227726888574
+21
+0.10628965688789788
+31
+1.192456946428371
+12
+2.942091015256665e-15
+22
+0.11003915000000064
+32
+1.1924569464283716
+13
+2.942091015256665e-15
+23
+0.11003915000000064
+33
+1.1924569464283716
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2859865540554998
+20
+0.003291402957666445
+30
+0.04019278902061723
+11
+0.20781952412910853
+21
+1.1657341758564144e-15
+31
+0.7307557071160136
+12
+0.2863149648021954
+22
+1.1657341758564144e-15
+32
+0.04023894414108302
+13
+0.2863149648021954
+23
+1.1657341758564144e-15
+33
+0.04023894414108302
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.20781952412910853
+20
+1.1657341758564144e-15
+30
+0.7307557071160136
+11
+0.2859865540554998
+21
+0.003291402957666445
+31
+0.04019278902061723
+12
+0.20175320916481837
+22
+0.059841866024748225
+32
+0.7307557071160136
+13
+0.20175320916481837
+23
+0.059841866024748225
+33
+0.7307557071160136
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.056960455453783476
+20
+0.21257931377579353
+30
+1.001863547806677
+11
+2.942091015256665e-15
+21
+0.29267242474244115
+31
+0.30841453414256254
+12
+-0.07574919749967438
+22
+0.2826998537013695
+32
+0.30841453414256254
+13
+-0.07574919749967438
+23
+0.2826998537013695
+33
+0.30841453414256254
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29267242474244115
+30
+0.30841453414256254
+11
+-0.056960455453783476
+21
+0.21257931377579353
+31
+1.001863547806677
+12
+1.7763568394002505e-15
+22
+0.22007830000000128
+32
+1.001863547806677
+13
+1.7763568394002505e-15
+23
+0.22007830000000128
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.07586512499733417
+20
+0.2233328844240816
+30
+0.7307557071160136
+11
+0.14470316953883317
+21
+0.2504791096276532
+31
+0.020336704231065143
+12
+0.14352399544263056
+22
+0.2511284049735225
+32
+0.02017098211932512
+13
+0.14352399544263056
+23
+0.2511284049735225
+33
+0.02017098211932512
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.14470316953883317
+20
+0.2504791096276532
+30
+0.020336704231065143
+11
+0.07586512499733417
+21
+0.2233328844240816
+31
+0.7307557071160136
+12
+0.11880320614369011
+22
+0.20023478630317332
+32
+0.7307557071160136
+13
+0.11880320614369011
+23
+0.20023478630317332
+33
+0.7307557071160136
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.24866776335898266
+20
+0.144017558640957
+30
+0.03494797502604473
+11
+0.15567497232576927
+21
+0.1634910183993356
+31
+0.7307557071160147
+12
+0.18396767361172195
+22
+0.11560560777326617
+32
+0.7307557071160136
+13
+0.18396767361172195
+23
+0.11560560777326617
+33
+0.7307557071160136
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.15567497232576927
+20
+0.1634910183993356
+30
+0.7307557071160147
+11
+0.24866776335898266
+21
+0.144017558640957
+31
+0.03494797502604473
+12
+0.24733927091273722
+22
+0.14630304025430108
+32
+0.03476126758875187
+13
+0.24733927091273722
+23
+0.14630304025430108
+33
+0.03476126758875187
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.27676048551116517
+20
+0.07446552246557753
+30
+0.03889614964637553
+11
+0.18396767361172195
+21
+0.11560560777326617
+31
+0.7307557071160136
+12
+0.20175320916481837
+22
+0.059841866024748225
+32
+0.7307557071160136
+13
+0.20175320916481837
+23
+0.059841866024748225
+33
+0.7307557071160136
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.18396767361172195
+20
+0.11560560777326617
+30
+0.7307557071160136
+11
+0.27676048551116517
+21
+0.07446552246557753
+31
+0.03889614964637553
+12
+0.27583114835190015
+22
+0.0774264694728452
+32
+0.03876553982628998
+13
+0.27583114835190015
+23
+0.0774264694728452
+33
+0.03876553982628998
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.24866776335898266
+20
+0.144017558640957
+30
+0.03494797502604473
+11
+0.18396767361172195
+21
+0.11560560777326617
+31
+0.7307557071160136
+12
+0.27583114835190015
+22
+0.0774264694728452
+32
+0.03876553982628998
+13
+0.27583114835190015
+23
+0.0774264694728452
+33
+0.03876553982628998
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.11880320614369011
+20
+0.20023478630317332
+30
+0.7307557071160136
+11
+0.20373004107196863
+21
+0.2040362885325907
+31
+0.028632390026202197
+12
+0.20230908016629684
+22
+0.2054774695577018
+32
+0.02843268699444177
+13
+0.20230908016629684
+23
+0.2054774695577018
+33
+0.02843268699444177
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.20373004107196863
+20
+0.2040362885325907
+30
+0.028632390026202197
+11
+0.11880320614369011
+21
+0.20023478630317332
+31
+0.7307557071160136
+12
+0.15567497232576927
+22
+0.1634910183993356
+32
+0.7307557071160147
+13
+0.15567497232576927
+23
+0.1634910183993356
+33
+0.7307557071160147
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.040277124310843404
+20
+0.1503162743108481
+30
+1.157482406128686
+11
+2.942091015256665e-15
+21
+0.19059339862169555
+31
+1.1119026978066777
+12
+-0.049329201434107434
+22
+0.18409908604890313
+32
+1.1119026978066777
+13
+-0.049329201434107434
+23
+0.18409908604890313
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.19059339862169555
+30
+1.1119026978066777
+11
+-0.040277124310843404
+21
+0.1503162743108481
+31
+1.157482406128686
+12
+1.7763568394002505e-15
+22
+0.15561885832200822
+32
+1.157482406128686
+13
+1.7763568394002505e-15
+23
+0.15561885832200822
+33
+1.157482406128686
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.11880320614369011
+20
+0.20023478630317332
+30
+0.7307557071160136
+11
+0.20230908016629684
+21
+0.2054774695577018
+31
+0.02843268699444177
+12
+0.14470316953883317
+22
+0.2504791096276532
+32
+0.020336704231065143
+13
+0.14470316953883317
+23
+0.2504791096276532
+33
+0.020336704231065143
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.21604855191382222
+20
+0.18772809764161968
+30
+0.030363643822208155
+11
+0.15567497232576927
+21
+0.1634910183993356
+31
+0.7307557071160147
+12
+0.24733927091273722
+22
+0.14630304025430108
+32
+0.03476126758875187
+13
+0.24733927091273722
+23
+0.14630304025430108
+33
+0.03476126758875187
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.15567497232576927
+20
+0.1634910183993356
+30
+0.7307557071160147
+11
+0.21604855191382222
+21
+0.18772809764161968
+31
+0.030363643822208155
+12
+0.20373004107196863
+22
+0.2040362885325907
+32
+0.028632390026202197
+13
+0.20373004107196863
+23
+0.2040362885325907
+33
+0.028632390026202197
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999997406
+20
+0.20533584931084842
+30
+1.0588240032604657
+11
+2.942091015256665e-15
+21
+0.19059339862169555
+31
+1.1119026978066777
+12
+2.942091015256665e-15
+22
+0.21257931377579575
+32
+1.0588240032604646
+13
+2.942091015256665e-15
+23
+0.21257931377579575
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.19059339862169555
+30
+1.1119026978066777
+11
+-0.055019574999997406
+21
+0.20533584931084842
+31
+1.0588240032604657
+12
+-0.049329201434107434
+22
+0.18409908604890313
+32
+1.1119026978066777
+13
+-0.049329201434107434
+23
+0.18409908604890313
+33
+1.1119026978066777
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.27676048551116517
+20
+0.07446552246557753
+30
+0.03889614964637553
+11
+0.20175320916481837
+21
+0.059841866024748225
+31
+0.7307557071160136
+12
+0.2859865540554998
+22
+0.003291402957666445
+32
+0.04019278902061723
+13
+0.2859865540554998
+23
+0.003291402957666445
+33
+0.04019278902061723
+70
+0
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.014742450689149977
+20
+0.05501957500000032
+30
+1.2144428615824718
+11
+2.942091015256665e-15
+21
+0.11003915000000064
+31
+1.1924569464283716
+12
+-0.028480227726888574
+22
+0.10628965688789788
+32
+1.192456946428371
+13
+-0.028480227726888574
+23
+0.10628965688789788
+33
+1.192456946428371
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.11003915000000064
+30
+1.1924569464283716
+11
+-0.014742450689149977
+21
+0.05501957500000032
+31
+1.2144428615824718
+12
+1.7763568394002505e-15
+22
+0.05696045545378753
+32
+1.2144428615824712
+13
+1.7763568394002505e-15
+23
+0.05696045545378753
+33
+1.2144428615824712
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999997406
+20
+0.20533584931084842
+30
+1.0588240032604657
+11
+1.7763568394002505e-15
+21
+0.22007830000000128
+31
+1.001863547806677
+12
+-0.056960455453783476
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+-0.056960455453783476
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+1.7763568394002505e-15
+20
+0.22007830000000128
+30
+1.001863547806677
+11
+-0.055019574999997406
+21
+0.20533584931084842
+31
+1.0588240032604657
+12
+2.942091015256665e-15
+22
+0.21257931377579575
+32
+1.0588240032604646
+13
+2.942091015256665e-15
+23
+0.21257931377579575
+33
+1.0588240032604646
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.2825554318689639
+20
+0.07571049978631911
+30
+0.28255543186896687
+11
+-0.15510247388785312
+21
+-1.1102230246251565e-15
+31
+0.1551024738878516
+12
+-0.29258087504374125
+22
+-2.220446049250313e-15
+32
+0.2925808750437419
+13
+-0.29258087504374125
+23
+-2.220446049250313e-15
+33
+0.2925808750437419
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.15510247388785312
+20
+-1.1102230246251565e-15
+30
+0.1551024738878516
+11
+-0.2825554318689639
+21
+0.07571049978631911
+31
+0.28255543186896687
+12
+-0.15510247388785312
+22
+0.15899592086427927
+32
+0.1551024738878538
+13
+-0.15510247388785312
+23
+0.15899592086427927
+33
+0.1551024738878538
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.15510247388785312
+20
+0.15899592086427927
+30
+0.1551024738878538
+11
+-0.2825554318689639
+21
+0.07571049978631911
+31
+0.28255543186896687
+12
+-0.2531852032990528
+22
+0.1461765452795445
+32
+0.2531852032990535
+13
+-0.2531852032990528
+23
+0.1461765452795445
+33
+0.2531852032990535
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.15510247388785312
+20
+0.15899592086427927
+30
+0.1551024738878538
+11
+-0.2531852032990528
+21
+0.1461765452795445
+31
+0.2531852032990535
+12
+-0.20653412136710422
+22
+0.2065341213671094
+32
+0.20653412136710492
+13
+-0.20653412136710422
+23
+0.2065341213671094
+33
+0.20653412136710492
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+-0.15510247388785312
+20
+0.15899592086427927
+30
+0.1551024738878538
+11
+-0.20653412136710422
+21
+0.2065341213671094
+31
+0.20653412136710492
+12
+2.942091015256665e-15
+22
+0.15899592086427927
+32
+-1.1189627002750058e-15
+13
+2.942091015256665e-15
+23
+0.15899592086427927
+33
+-1.1189627002750058e-15
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.15899592086427927
+30
+-1.1189627002750058e-15
+11
+-0.20653412136710422
+21
+0.2065341213671094
+31
+0.20653412136710492
+12
+2.942091015256665e-15
+22
+0.29088918200000213
+32
+-1.1189627002750058e-15
+13
+2.942091015256665e-15
+23
+0.29088918200000213
+33
+-1.1189627002750058e-15
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29088918200000213
+30
+-1.1189627002750058e-15
+11
+-0.20653412136710422
+21
+0.2065341213671094
+31
+0.20653412136710492
+12
+-0.20568971316600607
+22
+0.20717595716186143
+32
+0.20568971316600676
+13
+-0.20568971316600607
+23
+0.20717595716186143
+33
+0.20568971316600676
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29088918200000213
+30
+-1.1189627002750058e-15
+11
+-0.20568971316600607
+21
+0.20717595716186143
+31
+0.20568971316600676
+12
+-0.14586628805175494
+22
+0.25264782201712543
+32
+0.14586628805175564
+13
+-0.14586628805175494
+23
+0.25264782201712543
+33
+0.14586628805175564
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29088918200000213
+30
+-1.1189627002750058e-15
+11
+-0.14586628805175494
+21
+0.25264782201712543
+31
+0.14586628805175564
+12
+-0.07540049589488734
+22
+0.2813984815956233
+32
+0.07540049589488913
+13
+-0.07540049589488734
+23
+0.2813984815956233
+33
+0.07540049589488913
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.07279039008472937
+20
+0.28136529499842167
+30
+0.010230022180818192
+11
+2.942091015256665e-15
+21
+0.15899592086427927
+31
+-1.1189627002750058e-15
+12
+2.942091015256665e-15
+22
+0.29088918200000213
+32
+-1.1189627002750058e-15
+13
+2.942091015256665e-15
+23
+0.29088918200000213
+33
+-1.1189627002750058e-15
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.15899592086427927
+30
+-1.1189627002750058e-15
+11
+0.07279039008472937
+21
+0.28136529499842167
+31
+0.010230022180818192
+12
+0.2165682094492326
+22
+0.15899592086427927
+32
+0.030436676925993323
+13
+0.2165682094492326
+23
+0.15899592086427927
+33
+0.030436676925993323
+70
+3
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.07279039008472937
+21
+0.28136529499842167
+31
+0.010230022180818192
+12
+0.0752960226550266
+22
+0.28014261634080284
+32
+0.010582165873702443
+13
+0.0752960226550266
+23
+0.28014261634080284
+33
+0.010582165873702443
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.0752960226550266
+21
+0.28014261634080284
+31
+0.010582165873702443
+12
+0.14352399544263056
+22
+0.2511284049735225
+32
+0.02017098211932512
+13
+0.14352399544263056
+23
+0.2511284049735225
+33
+0.02017098211932512
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.14352399544263056
+21
+0.2511284049735225
+31
+0.02017098211932512
+12
+0.14470316953883317
+22
+0.2504791096276532
+32
+0.020336704231065143
+13
+0.14470316953883317
+23
+0.2504791096276532
+33
+0.020336704231065143
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.14470316953883317
+21
+0.2504791096276532
+31
+0.020336704231065143
+12
+0.20230908016629684
+22
+0.2054774695577018
+32
+0.02843268699444177
+13
+0.20230908016629684
+23
+0.2054774695577018
+33
+0.02843268699444177
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.20230908016629684
+21
+0.2054774695577018
+31
+0.02843268699444177
+12
+0.20373004107196863
+22
+0.2040362885325907
+32
+0.028632390026202197
+13
+0.20373004107196863
+23
+0.2040362885325907
+33
+0.028632390026202197
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.20373004107196863
+21
+0.2040362885325907
+31
+0.028632390026202197
+12
+0.21604855191382222
+22
+0.18772809764161968
+32
+0.030363643822208155
+13
+0.21604855191382222
+23
+0.18772809764161968
+33
+0.030363643822208155
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.21604855191382222
+21
+0.18772809764161968
+31
+0.030363643822208155
+12
+0.24733927091273722
+22
+0.14630304025430108
+32
+0.03476126758875187
+13
+0.24733927091273722
+23
+0.14630304025430108
+33
+0.03476126758875187
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.2863149648021954
+21
+1.1657341758564144e-15
+31
+0.04023894414108302
+12
+0.21656820944923139
+22
+-1.5654144647214707e-14
+32
+0.0304366769259978
+13
+0.21656820944923139
+23
+-1.5654144647214707e-14
+33
+0.0304366769259978
+70
+1
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2863149648021954
+20
+1.1657341758564144e-15
+30
+0.04023894414108302
+11
+0.2165682094492326
+21
+0.15899592086427927
+31
+0.030436676925993323
+12
+0.24733927091273722
+22
+0.14630304025430108
+32
+0.03476126758875187
+13
+0.24733927091273722
+23
+0.14630304025430108
+33
+0.03476126758875187
+70
+15
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2863149648021954
+20
+1.1657341758564144e-15
+30
+0.04023894414108302
+11
+0.24733927091273722
+21
+0.14630304025430108
+31
+0.03476126758875187
+12
+0.24866776335898266
+22
+0.144017558640957
+32
+0.03494797502604473
+13
+0.24866776335898266
+23
+0.144017558640957
+33
+0.03494797502604473
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2863149648021954
+20
+1.1657341758564144e-15
+30
+0.04023894414108302
+11
+0.24866776335898266
+21
+0.144017558640957
+31
+0.03494797502604473
+12
+0.27583114835190015
+22
+0.0774264694728452
+32
+0.03876553982628998
+13
+0.27583114835190015
+23
+0.0774264694728452
+33
+0.03876553982628998
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2863149648021954
+20
+1.1657341758564144e-15
+30
+0.04023894414108302
+11
+0.27583114835190015
+21
+0.0774264694728452
+31
+0.03876553982628998
+12
+0.27676048551116517
+22
+0.07446552246557753
+32
+0.03889614964637553
+13
+0.27676048551116517
+23
+0.07446552246557753
+33
+0.03889614964637553
+70
+13
+ 0
+3DFACE
+ 8
+finger distal
+10
+0.2863149648021954
+20
+1.1657341758564144e-15
+30
+0.04023894414108302
+11
+0.27676048551116517
+21
+0.07446552246557753
+31
+0.03889614964637553
+12
+0.2859865540554998
+22
+0.003291402957666445
+32
+0.04019278902061723
+13
+0.2859865540554998
+23
+0.003291402957666445
+33
+0.04019278902061723
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.34414271161815124
+20
+1.3322676295501878e-14
+30
+1.4038444237044558
+11
+-0.3085499141622408
+21
+0.2146021186099738
+31
+1.3179158093635974
+12
+-0.308549914162242
+22
+6.6058269965196814e-15
+32
+1.3179158093635963
+13
+-0.308549914162242
+23
+6.6058269965196814e-15
+33
+1.3179158093635963
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3085499141622408
+20
+0.2146021186099738
+30
+1.3179158093635974
+11
+-0.34414271161815124
+21
+1.3322676295501878e-14
+31
+1.4038444237044558
+12
+-0.3441427116181524
+22
+0.21460211860998057
+32
+1.4038444237044547
+13
+-0.3441427116181524
+23
+0.21460211860998057
+33
+1.4038444237044547
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165913117
+20
+6.6058269965196814e-15
+30
+1.8401998969817372
+11
+-8.1601392309949e-15
+21
+0.21460211860997835
+31
+1.852339937363593
+12
+-9.270362255620057e-15
+22
+4.3298697960381105e-15
+32
+1.8523399373635918
+13
+-9.270362255620057e-15
+23
+4.3298697960381105e-15
+33
+1.8523399373635918
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.1601392309949e-15
+20
+0.21460211860997835
+30
+1.852339937363593
+11
+0.09221276165913117
+21
+6.6058269965196814e-15
+31
+1.8401998969817372
+12
+0.09221276165912784
+22
+0.21460211860997835
+32
+1.8401998969817395
+13
+0.09221276165912784
+23
+0.21460211860997835
+33
+1.8401998969817395
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2519299499590142
+20
+6.6058269965196814e-15
+30
+1.7479871353226024
+11
+-0.178141376000007
+21
+0.2146021186099828
+31
+1.8046070995258234
+12
+-0.25192994995901646
+22
+0.21460211860997158
+32
+1.7479871353226013
+13
+-0.25192994995901646
+23
+0.21460211860997158
+33
+1.7479871353226013
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.178141376000007
+20
+0.2146021186099828
+30
+1.8046070995258234
+11
+-0.2519299499590142
+21
+6.6058269965196814e-15
+31
+1.7479871353226024
+12
+-0.178141376000007
+22
+1.3322676295501878e-14
+32
+1.8046070995258212
+13
+-0.178141376000007
+23
+1.3322676295501878e-14
+33
+1.8046070995258212
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2519299499589991
+20
+4.3298697960381105e-15
+30
+1.7479871353225969
+11
+0.17814137599999302
+21
+0.21460211860997835
+31
+1.8046070995258234
+12
+0.1781413759999908
+22
+2.1094237467877974e-15
+32
+1.8046070995258223
+13
+0.1781413759999908
+23
+2.1094237467877974e-15
+33
+1.8046070995258223
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999302
+20
+0.21460211860997835
+30
+1.8046070995258234
+11
+0.2519299499589991
+21
+4.3298697960381105e-15
+31
+1.7479871353225969
+12
+0.2519299499590002
+22
+0.2146021186099738
+32
+1.7479871353226013
+13
+0.2519299499590002
+23
+0.2146021186099738
+33
+1.7479871353226013
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.308549914162242
+20
+1.3322676295501878e-14
+30
+1.6741985613635963
+11
+-0.3441427116181479
+21
+0.21460211860997602
+31
+1.5882699470227322
+12
+-0.34414271161815574
+22
+2.1094237467877974e-15
+32
+1.5882699470227366
+13
+-0.34414271161815574
+23
+2.1094237467877974e-15
+33
+1.5882699470227366
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181479
+20
+0.21460211860997602
+30
+1.5882699470227322
+11
+-0.308549914162242
+21
+1.3322676295501878e-14
+31
+1.6741985613635963
+12
+-0.3085499141622374
+22
+0.2146021186099828
+32
+1.6741985613635952
+13
+-0.3085499141622374
+23
+0.2146021186099828
+33
+1.6741985613635952
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.09221276165914405
+20
+6.6058269965196814e-15
+30
+1.8401998969817417
+11
+-0.178141376000007
+21
+0.2146021186099828
+31
+1.8046070995258234
+12
+-0.178141376000007
+22
+1.3322676295501878e-14
+32
+1.8046070995258212
+13
+-0.178141376000007
+23
+1.3322676295501878e-14
+33
+1.8046070995258212
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.178141376000007
+20
+0.2146021186099828
+30
+1.8046070995258234
+11
+-0.09221276165914405
+21
+6.6058269965196814e-15
+31
+1.8401998969817417
+12
+-0.09221276165914855
+22
+0.21460211860997835
+32
+1.8401998969817361
+13
+-0.09221276165914855
+23
+0.21460211860997835
+33
+1.8401998969817361
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222566
+20
+0.21460211860997158
+30
+1.6741985613635975
+11
+0.2519299499589991
+21
+4.3298697960381105e-15
+31
+1.7479871353225969
+12
+0.3085499141622211
+22
+4.3298697960381105e-15
+32
+1.6741985613635941
+13
+0.3085499141622211
+23
+4.3298697960381105e-15
+33
+1.6741985613635941
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2519299499589991
+20
+4.3298697960381105e-15
+30
+1.7479871353225969
+11
+0.30854991416222566
+21
+0.21460211860997158
+31
+1.6741985613635975
+12
+0.2519299499590002
+22
+0.2146021186099738
+32
+1.7479871353226013
+13
+0.2519299499590002
+23
+0.2146021186099738
+33
+1.7479871353226013
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3562827519999896
+20
+0.2146021186099738
+30
+1.496057185363593
+11
+0.3441427116181349
+21
+6.6058269965196814e-15
+31
+1.58826994702273
+12
+0.3562827519999907
+22
+2.1094237467877974e-15
+32
+1.496057185363593
+13
+0.3562827519999907
+23
+2.1094237467877974e-15
+33
+1.496057185363593
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3441427116181349
+20
+6.6058269965196814e-15
+30
+1.58826994702273
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.3441427116181349
+22
+0.2146021186099738
+32
+1.5882699470227333
+13
+0.3441427116181349
+23
+0.2146021186099738
+33
+1.5882699470227333
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3562827520000115
+20
+0.21460211860998057
+30
+1.496057185363594
+11
+-0.34414271161815124
+21
+1.3322676295501878e-14
+31
+1.4038444237044558
+12
+-0.35628275200000925
+22
+8.826273045769994e-15
+32
+1.496057185363594
+13
+-0.35628275200000925
+23
+8.826273045769994e-15
+33
+1.496057185363594
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.34414271161815124
+20
+1.3322676295501878e-14
+30
+1.4038444237044558
+11
+-0.3562827520000115
+21
+0.21460211860998057
+31
+1.496057185363594
+12
+-0.3441427116181524
+22
+0.21460211860998057
+32
+1.4038444237044547
+13
+-0.3441427116181524
+23
+0.21460211860998057
+33
+1.4038444237044547
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3085499141622408
+20
+0.2146021186099738
+30
+1.3179158093635974
+11
+-0.25192994995901313
+21
+1.1046719095020308e-14
+31
+1.2441272354045858
+12
+-0.308549914162242
+22
+6.6058269965196814e-15
+32
+1.3179158093635963
+13
+-0.308549914162242
+23
+6.6058269965196814e-15
+33
+1.3179158093635963
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.25192994995901313
+20
+1.1046719095020308e-14
+30
+1.2441272354045858
+11
+-0.3085499141622408
+21
+0.2146021186099738
+31
+1.3179158093635974
+12
+-0.2519299499590154
+22
+0.2146021186099828
+32
+1.244127235404588
+13
+-0.2519299499590154
+23
+0.2146021186099828
+33
+1.244127235404588
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3441427116181349
+20
+6.6058269965196814e-15
+30
+1.58826994702273
+11
+0.30854991416222566
+21
+0.21460211860997158
+31
+1.6741985613635975
+12
+0.3085499141622211
+22
+4.3298697960381105e-15
+32
+1.6741985613635941
+13
+0.3085499141622211
+23
+4.3298697960381105e-15
+33
+1.6741985613635941
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222566
+20
+0.21460211860997158
+30
+1.6741985613635975
+11
+0.3441427116181349
+21
+6.6058269965196814e-15
+31
+1.58826994702273
+12
+0.3441427116181349
+22
+0.2146021186099738
+32
+1.5882699470227333
+13
+0.3441427116181349
+23
+0.2146021186099738
+33
+1.5882699470227333
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165913117
+20
+6.6058269965196814e-15
+30
+1.8401998969817372
+11
+0.17814137599999302
+21
+0.21460211860997835
+31
+1.8046070995258234
+12
+0.09221276165912784
+22
+0.21460211860997835
+32
+1.8401998969817395
+13
+0.09221276165912784
+23
+0.21460211860997835
+33
+1.8401998969817395
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999302
+20
+0.21460211860997835
+30
+1.8046070995258234
+11
+0.09221276165913117
+21
+6.6058269965196814e-15
+31
+1.8401998969817372
+12
+0.1781413759999908
+22
+2.1094237467877974e-15
+32
+1.8046070995258223
+13
+0.1781413759999908
+23
+2.1094237467877974e-15
+33
+1.8046070995258223
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.25192994995901646
+20
+0.21460211860997158
+30
+1.7479871353226013
+11
+-0.308549914162242
+21
+1.3322676295501878e-14
+31
+1.6741985613635963
+12
+-0.2519299499590142
+22
+6.6058269965196814e-15
+32
+1.7479871353226024
+13
+-0.2519299499590142
+23
+6.6058269965196814e-15
+33
+1.7479871353226024
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.308549914162242
+20
+1.3322676295501878e-14
+30
+1.6741985613635963
+11
+-0.25192994995901646
+21
+0.21460211860997158
+31
+1.7479871353226013
+12
+-0.3085499141622374
+22
+0.2146021186099828
+32
+1.6741985613635952
+13
+-0.3085499141622374
+23
+0.2146021186099828
+33
+1.6741985613635952
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.09221276165914405
+20
+6.6058269965196814e-15
+30
+1.8401998969817417
+11
+-8.1601392309949e-15
+21
+0.21460211860997835
+31
+1.852339937363593
+12
+-0.09221276165914855
+22
+0.21460211860997835
+32
+1.8401998969817361
+13
+-0.09221276165914855
+23
+0.21460211860997835
+33
+1.8401998969817361
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.1601392309949e-15
+20
+0.21460211860997835
+30
+1.852339937363593
+11
+-0.09221276165914405
+21
+6.6058269965196814e-15
+31
+1.8401998969817417
+12
+-9.270362255620057e-15
+22
+4.3298697960381105e-15
+32
+1.8523399373635918
+13
+-9.270362255620057e-15
+23
+4.3298697960381105e-15
+33
+1.8523399373635918
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181479
+20
+0.21460211860997602
+30
+1.5882699470227322
+11
+-0.35628275200000925
+21
+8.826273045769994e-15
+31
+1.496057185363594
+12
+-0.34414271161815574
+22
+2.1094237467877974e-15
+32
+1.5882699470227366
+13
+-0.34414271161815574
+23
+2.1094237467877974e-15
+33
+1.5882699470227366
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35628275200000925
+20
+8.826273045769994e-15
+30
+1.496057185363594
+11
+-0.3441427116181479
+21
+0.21460211860997602
+31
+1.5882699470227322
+12
+-0.3562827520000115
+22
+0.21460211860998057
+32
+1.496057185363594
+13
+-0.3562827520000115
+23
+0.21460211860998057
+33
+1.496057185363594
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3085499141622408
+20
+0.2146021186099738
+30
+1.3179158093635974
+11
+-6.994405055138486e-15
+21
+0.21460211860998057
+31
+1.496057185363593
+12
+-0.2519299499590154
+22
+0.2146021186099828
+32
+1.244127235404588
+13
+-0.2519299499590154
+23
+0.2146021186099828
+33
+1.244127235404588
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-6.994405055138486e-15
+20
+0.21460211860998057
+30
+1.496057185363593
+11
+-0.3085499141622408
+21
+0.2146021186099738
+31
+1.3179158093635974
+12
+-0.3441427116181524
+22
+0.21460211860998057
+32
+1.4038444237044547
+13
+-0.3441427116181524
+23
+0.21460211860998057
+33
+1.4038444237044547
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-6.994405055138486e-15
+20
+0.21460211860998057
+30
+1.496057185363593
+11
+-0.3441427116181524
+21
+0.21460211860998057
+31
+1.4038444237044547
+12
+-0.3562827520000115
+22
+0.21460211860998057
+32
+1.496057185363594
+13
+-0.3562827520000115
+23
+0.21460211860998057
+33
+1.496057185363594
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-6.994405055138486e-15
+20
+0.21460211860998057
+30
+1.496057185363593
+11
+-0.3562827520000115
+21
+0.21460211860998057
+31
+1.496057185363594
+12
+0.3562827519999896
+22
+0.2146021186099738
+32
+1.496057185363593
+13
+0.3562827519999896
+23
+0.2146021186099738
+33
+1.496057185363593
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3562827519999896
+20
+0.2146021186099738
+30
+1.496057185363593
+11
+-0.3562827520000115
+21
+0.21460211860998057
+31
+1.496057185363594
+12
+0.3441427116181349
+22
+0.2146021186099738
+32
+1.5882699470227333
+13
+0.3441427116181349
+23
+0.2146021186099738
+33
+1.5882699470227333
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3441427116181349
+20
+0.2146021186099738
+30
+1.5882699470227333
+11
+-0.3562827520000115
+21
+0.21460211860998057
+31
+1.496057185363594
+12
+-0.3441427116181479
+22
+0.21460211860997602
+32
+1.5882699470227322
+13
+-0.3441427116181479
+23
+0.21460211860997602
+33
+1.5882699470227322
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3441427116181349
+20
+0.2146021186099738
+30
+1.5882699470227333
+11
+-0.3441427116181479
+21
+0.21460211860997602
+31
+1.5882699470227322
+12
+-0.3085499141622374
+22
+0.2146021186099828
+32
+1.6741985613635952
+13
+-0.3085499141622374
+23
+0.2146021186099828
+33
+1.6741985613635952
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3441427116181349
+20
+0.2146021186099738
+30
+1.5882699470227333
+11
+-0.3085499141622374
+21
+0.2146021186099828
+31
+1.6741985613635952
+12
+0.30854991416222566
+22
+0.21460211860997158
+32
+1.6741985613635975
+13
+0.30854991416222566
+23
+0.21460211860997158
+33
+1.6741985613635975
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222566
+20
+0.21460211860997158
+30
+1.6741985613635975
+11
+-0.3085499141622374
+21
+0.2146021186099828
+31
+1.6741985613635952
+12
+-0.25192994995901646
+22
+0.21460211860997158
+32
+1.7479871353226013
+13
+-0.25192994995901646
+23
+0.21460211860997158
+33
+1.7479871353226013
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222566
+20
+0.21460211860997158
+30
+1.6741985613635975
+11
+-0.25192994995901646
+21
+0.21460211860997158
+31
+1.7479871353226013
+12
+0.2519299499590002
+22
+0.2146021186099738
+32
+1.7479871353226013
+13
+0.2519299499590002
+23
+0.2146021186099738
+33
+1.7479871353226013
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2519299499590002
+20
+0.2146021186099738
+30
+1.7479871353226013
+11
+-0.25192994995901646
+21
+0.21460211860997158
+31
+1.7479871353226013
+12
+-0.178141376000007
+22
+0.2146021186099828
+32
+1.8046070995258234
+13
+-0.178141376000007
+23
+0.2146021186099828
+33
+1.8046070995258234
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2519299499590002
+20
+0.2146021186099738
+30
+1.7479871353226013
+11
+-0.178141376000007
+21
+0.2146021186099828
+31
+1.8046070995258234
+12
+0.17814137599999302
+22
+0.21460211860997835
+32
+1.8046070995258234
+13
+0.17814137599999302
+23
+0.21460211860997835
+33
+1.8046070995258234
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999302
+20
+0.21460211860997835
+30
+1.8046070995258234
+11
+-0.178141376000007
+21
+0.2146021186099828
+31
+1.8046070995258234
+12
+-0.09221276165914855
+22
+0.21460211860997835
+32
+1.8401998969817361
+13
+-0.09221276165914855
+23
+0.21460211860997835
+33
+1.8401998969817361
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999302
+20
+0.21460211860997835
+30
+1.8046070995258234
+11
+-0.09221276165914855
+21
+0.21460211860997835
+31
+1.8401998969817361
+12
+0.09221276165912784
+22
+0.21460211860997835
+32
+1.8401998969817395
+13
+0.09221276165912784
+23
+0.21460211860997835
+33
+1.8401998969817395
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165912784
+20
+0.21460211860997835
+30
+1.8401998969817395
+11
+-0.09221276165914855
+21
+0.21460211860997835
+31
+1.8401998969817361
+12
+-8.1601392309949e-15
+22
+0.21460211860997835
+32
+1.852339937363593
+13
+-8.1601392309949e-15
+23
+0.21460211860997835
+33
+1.852339937363593
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.25192994995901313
+20
+1.1046719095020308e-14
+30
+1.2441272354045858
+11
+-0.3915991037039563
+21
+0.10492866359423814
+31
+1.1044580816596459
+12
+-0.4043499632637243
+22
+4.3298697960381105e-15
+32
+1.091707222099877
+13
+-0.4043499632637243
+23
+4.3298697960381105e-15
+33
+1.091707222099877
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3915991037039563
+20
+0.10492866359423814
+30
+1.1044580816596459
+11
+-0.25192994995901313
+21
+1.1046719095020308e-14
+31
+1.2441272354045858
+12
+-0.35382596178106146
+22
+0.20428151428057906
+32
+1.1422312235825385
+13
+-0.35382596178106146
+23
+0.20428151428057906
+33
+1.1422312235825385
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35382596178106146
+20
+0.20428151428057906
+30
+1.1422312235825385
+11
+-0.25192994995901313
+21
+1.1046719095020308e-14
+31
+1.2441272354045858
+12
+-0.2925129368815464
+22
+0.292512936881548
+32
+1.2035442484820547
+13
+-0.2925129368815464
+23
+0.292512936881548
+33
+1.2035442484820547
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2925129368815464
+20
+0.292512936881548
+30
+1.2035442484820547
+11
+-0.25192994995901313
+21
+1.1046719095020308e-14
+31
+1.2441272354045858
+12
+-0.2519299499590154
+22
+0.2146021186099828
+32
+1.244127235404588
+13
+-0.2519299499590154
+23
+0.2146021186099828
+33
+1.244127235404588
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2519299499590154
+20
+0.2146021186099828
+30
+1.244127235404588
+11
+-0.21026701806260537
+21
+0.36419315844043
+31
+1.285790167300998
+12
+-0.2925129368815464
+22
+0.292512936881548
+32
+1.2035442484820547
+13
+-0.2925129368815464
+23
+0.292512936881548
+33
+1.2035442484820547
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21026701806260537
+20
+0.36419315844043
+30
+1.285790167300998
+11
+-0.2519299499590154
+21
+0.2146021186099828
+31
+1.244127235404588
+12
+-6.994405055138486e-15
+22
+0.21460211860998057
+32
+1.496057185363593
+13
+-6.994405055138486e-15
+23
+0.21460211860998057
+33
+1.496057185363593
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21026701806260537
+20
+0.36419315844043
+30
+1.285790167300998
+11
+-6.994405055138486e-15
+21
+0.21460211860998057
+31
+1.496057185363593
+12
+-0.11098494793676095
+22
+0.4142014645753518
+32
+1.3850722374268436
+13
+-0.11098494793676095
+23
+0.4142014645753518
+33
+1.3850722374268436
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.11098494793676095
+20
+0.4142014645753518
+30
+1.3850722374268436
+11
+-6.994405055138486e-15
+21
+0.21460211860998057
+31
+1.496057185363593
+12
+-4.773959005888173e-15
+22
+0.43806765680044213
+32
+1.4960571853635918
+13
+-4.773959005888173e-15
+23
+0.43806765680044213
+33
+1.4960571853635918
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3562827519999896
+20
+0.2146021186099738
+30
+1.496057185363593
+11
+-4.773959005888173e-15
+21
+0.43806765680044213
+31
+1.4960571853635918
+12
+-6.994405055138486e-15
+22
+0.21460211860998057
+32
+1.496057185363593
+13
+-6.994405055138486e-15
+23
+0.21460211860998057
+33
+1.496057185363593
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-4.773959005888173e-15
+20
+0.43806765680044213
+30
+1.4960571853635918
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.11338025262337792
+22
+0.4231408633654873
+32
+1.4960571853635918
+13
+0.11338025262337792
+23
+0.4231408633654873
+33
+1.4960571853635918
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.11338025262337792
+20
+0.4231408633654873
+30
+1.4960571853635918
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.2190338284002119
+22
+0.3793777193655077
+32
+1.4960571853635918
+13
+0.2190338284002119
+23
+0.3793777193655077
+33
+1.4960571853635918
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2190338284002119
+20
+0.3793777193655077
+30
+1.4960571853635918
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.30976061074207994
+22
+0.30976061074210015
+32
+1.496057185363593
+13
+0.30976061074207994
+23
+0.30976061074210015
+33
+1.496057185363593
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30976061074207994
+20
+0.30976061074210015
+30
+1.496057185363593
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.379377719365492
+22
+0.21903382840022767
+32
+1.4960571853635962
+13
+0.379377719365492
+23
+0.21903382840022767
+33
+1.4960571853635962
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.379377719365492
+20
+0.21903382840022767
+30
+1.4960571853635962
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.3562827519999907
+22
+2.1094237467877974e-15
+32
+1.496057185363593
+13
+0.3562827519999907
+23
+2.1094237467877974e-15
+33
+1.496057185363593
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.379377719365492
+20
+0.21903382840022767
+30
+1.4960571853635962
+11
+0.3562827519999907
+21
+2.1094237467877974e-15
+31
+1.496057185363593
+12
+0.438067656800432
+22
+8.826273045769994e-15
+32
+1.496057185363593
+13
+0.438067656800432
+23
+8.826273045769994e-15
+33
+1.496057185363593
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.379377719365492
+20
+0.21903382840022767
+30
+1.4960571853635962
+11
+0.438067656800432
+21
+8.826273045769994e-15
+31
+1.496057185363593
+12
+0.42314086336547163
+22
+0.11338025262340279
+32
+1.496057185363593
+13
+0.42314086336547163
+23
+0.11338025262340279
+33
+1.496057185363593
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-4.773959005888173e-15
+20
+0.43806765680044213
+30
+1.4960571853635918
+11
+0.09941181811875976
+21
+0.3710099560920558
+31
+0.7938622211774832
+12
+-9.325873406851315e-15
+22
+0.3840977702370938
+32
+0.7938622211774821
+13
+-9.325873406851315e-15
+23
+0.3840977702370938
+33
+0.7938622211774821
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09941181811875976
+20
+0.3710099560920558
+30
+0.7938622211774832
+11
+-4.773959005888173e-15
+21
+0.43806765680044213
+31
+1.4960571853635918
+12
+0.11338025262337792
+22
+0.4231408633654873
+32
+1.4960571853635918
+13
+0.11338025262337792
+23
+0.4231408633654873
+33
+1.4960571853635918
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09941181811875976
+20
+0.3710099560920558
+30
+0.7938622211774832
+11
+0.2190338284002119
+21
+0.3793777193655077
+31
+1.4960571853635918
+12
+0.1920488851185299
+22
+0.3326384265622784
+32
+0.7938622211774822
+13
+0.1920488851185299
+23
+0.3326384265622784
+33
+0.7938622211774822
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2190338284002119
+20
+0.3793777193655077
+30
+1.4960571853635918
+11
+0.09941181811875976
+21
+0.3710099560920558
+31
+0.7938622211774832
+12
+0.11338025262337792
+22
+0.4231408633654873
+32
+1.4960571853635918
+13
+0.11338025262337792
+23
+0.4231408633654873
+33
+1.4960571853635918
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2190338284002119
+20
+0.3793777193655077
+30
+1.4960571853635918
+11
+0.2715981379732598
+21
+0.2715981379732778
+31
+0.7938622211774844
+12
+0.1920488851185299
+22
+0.3326384265622784
+32
+0.7938622211774822
+13
+0.1920488851185299
+23
+0.3326384265622784
+33
+0.7938622211774822
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2715981379732598
+20
+0.2715981379732778
+30
+0.7938622211774844
+11
+0.2190338284002119
+21
+0.3793777193655077
+31
+1.4960571853635918
+12
+0.30976061074207994
+22
+0.30976061074210015
+32
+1.496057185363593
+13
+0.30976061074207994
+23
+0.30976061074210015
+33
+1.496057185363593
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2715981379732598
+20
+0.2715981379732778
+30
+0.7938622211774844
+11
+0.379377719365492
+21
+0.21903382840022767
+31
+1.4960571853635962
+12
+0.33263842656225817
+22
+0.19204888511854235
+32
+0.7938622211774866
+13
+0.33263842656225817
+23
+0.19204888511854235
+33
+0.7938622211774866
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.379377719365492
+20
+0.21903382840022767
+30
+1.4960571853635962
+11
+0.2715981379732598
+21
+0.2715981379732778
+31
+0.7938622211774844
+12
+0.30976061074207994
+22
+0.30976061074210015
+32
+1.496057185363593
+13
+0.30976061074207994
+23
+0.30976061074210015
+33
+1.496057185363593
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3710099560920289
+20
+0.09941181811878463
+30
+0.7938622211774811
+11
+0.438067656800432
+21
+8.826273045769994e-15
+31
+1.496057185363593
+12
+0.38409777023706804
+22
+8.826273045769994e-15
+32
+0.7938622211774833
+13
+0.38409777023706804
+23
+8.826273045769994e-15
+33
+0.7938622211774833
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.438067656800432
+20
+8.826273045769994e-15
+30
+1.496057185363593
+11
+0.3710099560920289
+21
+0.09941181811878463
+31
+0.7938622211774811
+12
+0.42314086336547163
+22
+0.11338025262340279
+32
+1.496057185363593
+13
+0.42314086336547163
+23
+0.11338025262340279
+33
+1.496057185363593
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.33263842656225817
+20
+0.19204888511854235
+30
+0.7938622211774866
+11
+0.42314086336547163
+21
+0.11338025262340279
+31
+1.496057185363593
+12
+0.3710099560920289
+22
+0.09941181811878463
+32
+0.7938622211774811
+13
+0.3710099560920289
+23
+0.09941181811878463
+33
+0.7938622211774811
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.42314086336547163
+20
+0.11338025262340279
+30
+1.496057185363593
+11
+0.33263842656225817
+21
+0.19204888511854235
+31
+0.7938622211774866
+12
+0.379377719365492
+22
+0.21903382840022767
+32
+1.4960571853635962
+13
+0.379377719365492
+23
+0.21903382840022767
+33
+1.4960571853635962
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3326384265622745
+20
+0.19204888511855134
+30
+0.7938622211774865
+11
+-0.37100995609204745
+21
+0.09941181811877786
+31
+0.7938622211774832
+12
+-0.3915991037039563
+22
+0.10492866359423814
+32
+1.1044580816596459
+13
+-0.3915991037039563
+23
+0.10492866359423814
+33
+1.1044580816596459
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35382596178106146
+20
+0.20428151428057906
+30
+1.1422312235825385
+11
+-0.3326384265622745
+21
+0.19204888511855134
+31
+0.7938622211774865
+12
+-0.3915991037039563
+22
+0.10492866359423814
+32
+1.1044580816596459
+13
+-0.3915991037039563
+23
+0.10492866359423814
+33
+1.1044580816596459
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2925129368815464
+20
+0.292512936881548
+30
+1.2035442484820547
+11
+-0.19204888511855078
+21
+0.3326384265622738
+31
+0.7938622211774832
+12
+-0.2715981379732795
+22
+0.27159813797327326
+32
+0.793862221177481
+13
+-0.2715981379732795
+23
+0.27159813797327326
+33
+0.793862221177481
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21026701806260537
+20
+0.36419315844043
+30
+1.285790167300998
+11
+-0.19204888511855078
+21
+0.3326384265622738
+31
+0.7938622211774832
+12
+-0.2925129368815464
+22
+0.292512936881548
+32
+1.2035442484820547
+13
+-0.2925129368815464
+23
+0.292512936881548
+33
+1.2035442484820547
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.11098494793676095
+20
+0.4142014645753518
+30
+1.3850722374268436
+11
+-9.325873406851315e-15
+21
+0.3840977702370938
+31
+0.7938622211774821
+12
+-0.09941181811877842
+22
+0.371009956092049
+32
+0.7938622211774821
+13
+-0.09941181811877842
+23
+0.371009956092049
+33
+0.7938622211774821
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-4.773959005888173e-15
+20
+0.43806765680044213
+30
+1.4960571853635918
+11
+-9.325873406851315e-15
+21
+0.3840977702370938
+31
+0.7938622211774821
+12
+-0.11098494793676095
+22
+0.4142014645753518
+32
+1.3850722374268436
+13
+-0.11098494793676095
+23
+0.4142014645753518
+33
+1.3850722374268436
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2715981379732795
+20
+0.27159813797327326
+30
+0.793862221177481
+11
+-0.3326384265622745
+21
+0.19204888511855134
+31
+0.7938622211774865
+12
+-0.35382596178106146
+22
+0.20428151428057906
+32
+1.1422312235825385
+13
+-0.35382596178106146
+23
+0.20428151428057906
+33
+1.1422312235825385
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2925129368815464
+20
+0.292512936881548
+30
+1.2035442484820547
+11
+-0.2715981379732795
+21
+0.27159813797327326
+31
+0.793862221177481
+12
+-0.35382596178106146
+22
+0.20428151428057906
+32
+1.1422312235825385
+13
+-0.35382596178106146
+23
+0.20428151428057906
+33
+1.1422312235825385
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3915991037039563
+20
+0.10492866359423814
+30
+1.1044580816596459
+11
+-0.3840977702370878
+21
+1.1046719095020308e-14
+31
+0.7938622211774798
+12
+-0.4043499632637243
+22
+4.3298697960381105e-15
+32
+1.091707222099877
+13
+-0.4043499632637243
+23
+4.3298697960381105e-15
+33
+1.091707222099877
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3915991037039563
+20
+0.10492866359423814
+30
+1.1044580816596459
+11
+-0.37100995609204745
+21
+0.09941181811877786
+31
+0.7938622211774832
+12
+-0.3840977702370878
+22
+1.1046719095020308e-14
+32
+0.7938622211774798
+13
+-0.3840977702370878
+23
+1.1046719095020308e-14
+33
+0.7938622211774798
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21026701806260537
+20
+0.36419315844043
+30
+1.285790167300998
+11
+-0.09941181811877842
+21
+0.371009956092049
+31
+0.7938622211774821
+12
+-0.19204888511855078
+22
+0.3326384265622738
+32
+0.7938622211774832
+13
+-0.19204888511855078
+23
+0.3326384265622738
+33
+0.7938622211774832
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.11098494793676095
+20
+0.4142014645753518
+30
+1.3850722374268436
+11
+-0.09941181811877842
+21
+0.371009956092049
+31
+0.7938622211774821
+12
+-0.21026701806260537
+22
+0.36419315844043
+32
+1.285790167300998
+13
+-0.21026701806260537
+23
+0.36419315844043
+33
+1.285790167300998
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2715981379732795
+20
+0.27159813797327326
+30
+0.793862221177481
+11
+-0.38998682518333744
+21
+0.22515899850000798
+31
+-1.1116135775444189e-15
+12
+-0.3326384265622745
+22
+0.19204888511855134
+32
+0.7938622211774865
+13
+-0.3326384265622745
+23
+0.19204888511855134
+33
+0.7938622211774865
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.38998682518333744
+20
+0.22515899850000798
+30
+-1.1116135775444189e-15
+11
+-0.2715981379732795
+21
+0.27159813797327326
+31
+0.793862221177481
+12
+-0.3184229093690556
+22
+0.31842290936904827
+32
+1.132572953045013e-15
+13
+-0.3184229093690556
+23
+0.31842290936904827
+33
+1.132572953045013e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-9.325873406851315e-15
+20
+0.3840977702370938
+30
+0.7938622211774821
+11
+0.11655087397601116
+21
+0.4349737833450753
+31
+1.1690664734545857e-15
+12
+-7.049916206369744e-15
+22
+0.45031799700000497
+32
+1.159449649898216e-15
+13
+-7.049916206369744e-15
+23
+0.45031799700000497
+33
+1.159449649898216e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.11655087397601116
+20
+0.4349737833450753
+30
+1.1690664734545857e-15
+11
+-9.325873406851315e-15
+21
+0.3840977702370938
+31
+0.7938622211774821
+12
+0.09941181811875976
+22
+0.3710099560920558
+32
+0.7938622211774832
+13
+0.09941181811875976
+23
+0.3710099560920558
+33
+0.7938622211774832
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1920488851185299
+20
+0.3326384265622784
+30
+0.7938622211774822
+11
+0.31842290936903583
+21
+0.3184229093690527
+31
+-3.290439660368124e-15
+12
+0.22515899849998888
+22
+0.3899868251833378
+32
+-3.297929346592473e-15
+13
+0.22515899849998888
+23
+0.3899868251833378
+33
+-3.297929346592473e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.31842290936903583
+20
+0.3184229093690527
+30
+-3.290439660368124e-15
+11
+0.1920488851185299
+21
+0.3326384265622784
+31
+0.7938622211774822
+12
+0.2715981379732598
+22
+0.2715981379732778
+32
+0.7938622211774844
+13
+0.2715981379732598
+23
+0.2715981379732778
+33
+0.7938622211774844
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3326384265622745
+20
+0.19204888511855134
+30
+0.7938622211774865
+11
+-0.4349737833450727
+21
+0.11655087397603592
+31
+-1.1157228913145438e-15
+12
+-0.37100995609204745
+22
+0.09941181811877786
+32
+0.7938622211774832
+13
+-0.37100995609204745
+23
+0.09941181811877786
+33
+0.7938622211774832
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.4349737833450727
+20
+0.11655087397603592
+30
+-1.1157228913145438e-15
+11
+-0.3326384265622745
+21
+0.19204888511855134
+31
+0.7938622211774865
+12
+-0.38998682518333744
+22
+0.22515899850000798
+32
+-1.1116135775444189e-15
+13
+-0.38998682518333744
+23
+0.22515899850000798
+33
+-1.1116135775444189e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.450317996999995
+20
+1.1046719095020308e-14
+30
+-3.2806012647849043e-15
+11
+0.3710099560920289
+21
+0.09941181811878463
+31
+0.7938622211774811
+12
+0.38409777023706804
+22
+8.826273045769994e-15
+32
+0.7938622211774833
+13
+0.38409777023706804
+23
+8.826273045769994e-15
+33
+0.7938622211774833
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3710099560920289
+20
+0.09941181811878463
+30
+0.7938622211774811
+11
+0.450317996999995
+21
+1.1046719095020308e-14
+31
+-3.2806012647849043e-15
+12
+0.434973783345053
+22
+0.11655087397603137
+32
+-4.400432685469344e-15
+13
+0.434973783345053
+23
+0.11655087397603137
+33
+-4.400432685469344e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.09941181811877842
+20
+0.371009956092049
+30
+0.7938622211774821
+11
+-7.049916206369744e-15
+21
+0.45031799700000497
+31
+1.159449649898216e-15
+12
+-0.11655087397602859
+22
+0.4349737833450731
+32
+-2.2071617463537632e-15
+13
+-0.11655087397602859
+23
+0.4349737833450731
+33
+-2.2071617463537632e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.45031799700000497
+30
+1.159449649898216e-15
+11
+-0.09941181811877842
+21
+0.371009956092049
+31
+0.7938622211774821
+12
+-9.325873406851315e-15
+22
+0.3840977702370938
+32
+0.7938622211774821
+13
+-9.325873406851315e-15
+23
+0.3840977702370938
+33
+0.7938622211774821
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2251589985000131
+20
+0.38998682518332894
+30
+-1.0973661868614674e-15
+11
+-0.09941181811877842
+21
+0.371009956092049
+31
+0.7938622211774821
+12
+-0.11655087397602859
+22
+0.4349737833450731
+32
+-2.2071617463537632e-15
+13
+-0.11655087397602859
+23
+0.4349737833450731
+33
+-2.2071617463537632e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.09941181811877842
+20
+0.371009956092049
+30
+0.7938622211774821
+11
+-0.2251589985000131
+21
+0.38998682518332894
+31
+-1.0973661868614674e-15
+12
+-0.19204888511855078
+22
+0.3326384265622738
+32
+0.7938622211774832
+13
+-0.19204888511855078
+23
+0.3326384265622738
+33
+0.7938622211774832
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.11655087397601116
+20
+0.4349737833450753
+30
+1.1690664734545857e-15
+11
+0.1920488851185299
+21
+0.3326384265622784
+31
+0.7938622211774822
+12
+0.22515899849998888
+22
+0.3899868251833378
+32
+-3.297929346592473e-15
+13
+0.22515899849998888
+23
+0.3899868251833378
+33
+-3.297929346592473e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1920488851185299
+20
+0.3326384265622784
+30
+0.7938622211774822
+11
+0.11655087397601116
+21
+0.4349737833450753
+31
+1.1690664734545857e-15
+12
+0.09941181811875976
+22
+0.3710099560920558
+32
+0.7938622211774832
+13
+0.09941181811875976
+23
+0.3710099560920558
+33
+0.7938622211774832
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.434973783345053
+20
+0.11655087397603137
+30
+-4.400432685469344e-15
+11
+0.33263842656225817
+21
+0.19204888511854235
+31
+0.7938622211774866
+12
+0.3710099560920289
+22
+0.09941181811878463
+32
+0.7938622211774811
+13
+0.3710099560920289
+23
+0.09941181811878463
+33
+0.7938622211774811
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.33263842656225817
+20
+0.19204888511854235
+30
+0.7938622211774866
+11
+0.434973783345053
+21
+0.11655087397603137
+31
+-4.400432685469344e-15
+12
+0.38998682518331773
+22
+0.22515899850001475
+32
+7.206242211372932e-17
+13
+0.38998682518331773
+23
+0.22515899850001475
+33
+7.206242211372932e-17
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3184229093690556
+20
+0.31842290936904827
+30
+1.132572953045013e-15
+11
+-0.19204888511855078
+21
+0.3326384265622738
+31
+0.7938622211774832
+12
+-0.2251589985000131
+22
+0.38998682518332894
+32
+-1.0973661868614674e-15
+13
+-0.2251589985000131
+23
+0.38998682518332894
+33
+-1.0973661868614674e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.19204888511855078
+20
+0.3326384265622738
+30
+0.7938622211774832
+11
+-0.3184229093690556
+21
+0.31842290936904827
+31
+1.132572953045013e-15
+12
+-0.2715981379732795
+22
+0.27159813797327326
+32
+0.793862221177481
+13
+-0.2715981379732795
+23
+0.27159813797327326
+33
+0.793862221177481
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3840977702370878
+20
+1.1046719095020308e-14
+30
+0.7938622211774798
+11
+-0.4349737833450727
+21
+0.11655087397603592
+31
+-1.1157228913145438e-15
+12
+-0.4503179970000113
+22
+8.826273045769994e-15
+32
+-4.474288446697922e-15
+13
+-0.4503179970000113
+23
+8.826273045769994e-15
+33
+-4.474288446697922e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.4349737833450727
+20
+0.11655087397603592
+30
+-1.1157228913145438e-15
+11
+-0.3840977702370878
+21
+1.1046719095020308e-14
+31
+0.7938622211774798
+12
+-0.37100995609204745
+22
+0.09941181811877786
+32
+0.7938622211774832
+13
+-0.37100995609204745
+23
+0.09941181811877786
+33
+0.7938622211774832
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.38998682518331773
+20
+0.22515899850001475
+30
+7.206242211372932e-17
+11
+0.2715981379732598
+21
+0.2715981379732778
+31
+0.7938622211774844
+12
+0.33263842656225817
+22
+0.19204888511854235
+32
+0.7938622211774866
+13
+0.33263842656225817
+23
+0.19204888511854235
+33
+0.7938622211774866
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2715981379732598
+20
+0.2715981379732778
+30
+0.7938622211774844
+11
+0.38998682518331773
+21
+0.22515899850001475
+31
+7.206242211372932e-17
+12
+0.31842290936903583
+22
+0.3184229093690527
+32
+-3.290439660368124e-15
+13
+0.31842290936903583
+23
+0.3184229093690527
+33
+-3.290439660368124e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.0922127616591244
+20
+8.826273045769994e-15
+30
+-0.3441427116181453
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+0.08907068799998896
+22
+0.02386641891889696
+32
+-0.3441427116181431
+13
+0.08907068799998896
+23
+0.02386641891889696
+33
+-0.3441427116181431
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17207135580906174
+20
+0.04610638082957619
+30
+-0.308549914162236
+11
+0.0922127616591244
+21
+8.826273045769994e-15
+31
+-0.3441427116181453
+12
+0.08907068799998896
+22
+0.02386641891889696
+32
+-0.3441427116181431
+13
+0.08907068799998896
+23
+0.02386641891889696
+33
+-0.3441427116181431
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.0922127616591244
+20
+8.826273045769994e-15
+30
+-0.3441427116181453
+11
+0.17207135580906174
+21
+0.04610638082957619
+31
+-0.308549914162236
+12
+0.1781413759999918
+22
+1.3322676295501878e-14
+32
+-0.308549914162236
+13
+0.1781413759999918
+23
+1.3322676295501878e-14
+33
+-0.308549914162236
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.24334564508110312
+20
+0.06520426908112564
+30
+-0.2519299499590094
+11
+0.1781413759999918
+21
+1.3322676295501878e-14
+31
+-0.308549914162236
+12
+0.17207135580906174
+22
+0.04610638082957619
+32
+-0.308549914162236
+13
+0.17207135580906174
+23
+0.04610638082957619
+33
+-0.308549914162236
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1781413759999918
+20
+1.3322676295501878e-14
+30
+-0.308549914162236
+11
+0.24334564508110312
+21
+0.06520426908112564
+31
+-0.2519299499590094
+12
+0.25192994995899787
+22
+8.826273045769994e-15
+32
+-0.2519299499590072
+13
+0.25192994995899787
+23
+8.826273045769994e-15
+33
+-0.2519299499590072
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.25192994995899787
+20
+8.826273045769994e-15
+30
+-0.2519299499590072
+11
+0.2980363307885686
+21
+0.07985859414994045
+31
+-0.17814137600000218
+12
+0.3085499141622233
+22
+6.6058269965196814e-15
+32
+-0.17814137600000665
+13
+0.3085499141622233
+23
+6.6058269965196814e-15
+33
+-0.17814137600000665
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2980363307885686
+20
+0.07985859414994045
+30
+-0.17814137600000218
+11
+0.25192994995899787
+21
+8.826273045769994e-15
+31
+-0.2519299499590072
+12
+0.24334564508110312
+22
+0.06520426908112564
+32
+-0.2519299499590094
+13
+0.24334564508110312
+23
+0.06520426908112564
+33
+-0.2519299499590094
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2980363307885686
+20
+0.07985859414994045
+30
+-0.17814137600000218
+11
+0.34414271161813936
+21
+1.3322676295501878e-14
+31
+-0.0922127616591381
+12
+0.3085499141622233
+22
+6.6058269965196814e-15
+32
+-0.17814137600000665
+13
+0.3085499141622233
+23
+6.6058269965196814e-15
+33
+-0.17814137600000665
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813936
+20
+1.3322676295501878e-14
+30
+-0.0922127616591381
+11
+0.2980363307885686
+21
+0.07985859414994045
+31
+-0.17814137600000218
+12
+0.3324163330811115
+22
+0.08907068800001161
+32
+-0.0922127616591392
+13
+0.3324163330811115
+23
+0.08907068800001161
+33
+-0.0922127616591392
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813936
+20
+1.3322676295501878e-14
+30
+-0.0922127616591381
+11
+0.34414271161813714
+21
+0.0922127616591436
+31
+-1.0511651486801586e-15
+12
+0.3562827519999918
+22
+4.3298697960381105e-15
+32
+-1.0504778341596352e-15
+13
+0.3562827519999918
+23
+4.3298697960381105e-15
+33
+-1.0504778341596352e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813714
+20
+0.0922127616591436
+30
+-1.0511651486801586e-15
+11
+0.34414271161813936
+21
+1.3322676295501878e-14
+31
+-0.0922127616591381
+12
+0.3324163330811115
+22
+0.08907068800001161
+32
+-0.0922127616591392
+13
+0.3324163330811115
+23
+0.08907068800001161
+33
+-0.0922127616591392
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.08907068799998896
+20
+0.02386641891889696
+30
+-0.3441427116181431
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+0.07985859414992125
+22
+0.04610638082956947
+32
+-0.3441427116181476
+13
+0.07985859414992125
+23
+0.04610638082956947
+33
+-0.3441427116181476
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.15427495708110595
+20
+0.08907068800000262
+30
+-0.3085499141622349
+11
+0.08907068799998896
+21
+0.02386641891889696
+31
+-0.3441427116181431
+12
+0.07985859414992125
+22
+0.04610638082956947
+32
+-0.3441427116181476
+13
+0.07985859414992125
+23
+0.04610638082956947
+33
+-0.3441427116181476
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.08907068799998896
+20
+0.02386641891889696
+30
+-0.3441427116181431
+11
+0.15427495708110595
+21
+0.08907068800000262
+31
+-0.3085499141622349
+12
+0.17207135580906174
+22
+0.04610638082957619
+32
+-0.308549914162236
+13
+0.17207135580906174
+23
+0.04610638082957619
+33
+-0.308549914162236
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2181777366386336
+20
+0.1259649749795123
+30
+-0.251929949959006
+11
+0.17207135580906174
+21
+0.04610638082957619
+31
+-0.308549914162236
+12
+0.15427495708110595
+22
+0.08907068800000262
+32
+-0.3085499141622349
+13
+0.15427495708110595
+23
+0.08907068800000262
+33
+-0.3085499141622349
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17207135580906174
+20
+0.04610638082957619
+30
+-0.308549914162236
+11
+0.2181777366386336
+21
+0.1259649749795123
+31
+-0.251929949959006
+12
+0.24334564508110312
+22
+0.06520426908112564
+32
+-0.2519299499590094
+13
+0.24334564508110312
+23
+0.06520426908112564
+33
+-0.2519299499590094
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2181777366386336
+20
+0.1259649749795123
+30
+-0.251929949959006
+11
+0.2980363307885686
+21
+0.07985859414994045
+31
+-0.17814137600000218
+12
+0.24334564508110312
+22
+0.06520426908112564
+32
+-0.2519299499590094
+13
+0.24334564508110312
+23
+0.06520426908112564
+33
+-0.2519299499590094
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2980363307885686
+20
+0.07985859414994045
+30
+-0.17814137600000218
+11
+0.2181777366386336
+21
+0.1259649749795123
+31
+-0.251929949959006
+12
+0.26721206399999353
+22
+0.15427495708112848
+32
+-0.1781413760000044
+13
+0.26721206399999353
+23
+0.15427495708112848
+33
+-0.1781413760000044
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.26721206399999353
+20
+0.15427495708112848
+30
+-0.1781413760000044
+11
+0.3324163330811115
+21
+0.08907068800001161
+31
+-0.0922127616591392
+12
+0.2980363307885686
+22
+0.07985859414994045
+32
+-0.17814137600000218
+13
+0.2980363307885686
+23
+0.07985859414994045
+33
+-0.17814137600000218
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3324163330811115
+20
+0.08907068800001161
+30
+-0.0922127616591392
+11
+0.26721206399999353
+21
+0.15427495708112848
+31
+-0.1781413760000044
+12
+0.2980363307885675
+22
+0.17207135580907973
+32
+-0.0922127616591381
+13
+0.2980363307885675
+23
+0.17207135580907973
+33
+-0.0922127616591381
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2980363307885675
+20
+0.17207135580907973
+30
+-0.0922127616591381
+11
+0.34414271161813714
+21
+0.0922127616591436
+31
+-1.0511651486801586e-15
+12
+0.3324163330811115
+22
+0.08907068800001161
+32
+-0.0922127616591392
+13
+0.3324163330811115
+23
+0.08907068800001161
+33
+-0.0922127616591392
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813714
+20
+0.0922127616591436
+30
+-1.0511651486801586e-15
+11
+0.2980363307885675
+21
+0.17207135580907973
+31
+-0.0922127616591381
+12
+0.30854991416222677
+22
+0.17814137600001212
+32
+-3.291745508012748e-15
+13
+0.30854991416222677
+23
+0.17814137600001212
+33
+-3.291745508012748e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.07985859414992125
+20
+0.04610638082956947
+30
+-0.3441427116181476
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+0.06520426908110866
+22
+0.06520426908112797
+32
+-0.3441427116181431
+13
+0.06520426908110866
+23
+0.06520426908112797
+33
+-0.3441427116181431
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.12596497497949322
+20
+0.1259649749795123
+30
+-0.30854991416223376
+11
+0.07985859414992125
+21
+0.04610638082956947
+31
+-0.3441427116181476
+12
+0.06520426908110866
+22
+0.06520426908112797
+32
+-0.3441427116181431
+13
+0.06520426908110866
+23
+0.06520426908112797
+33
+-0.3441427116181431
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.07985859414992125
+20
+0.04610638082956947
+30
+-0.3441427116181476
+11
+0.12596497497949322
+21
+0.1259649749795123
+31
+-0.30854991416223376
+12
+0.15427495708110595
+22
+0.08907068800000262
+32
+-0.3085499141622349
+13
+0.15427495708110595
+23
+0.08907068800000262
+33
+-0.3085499141622349
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999402
+20
+0.17814137600000535
+30
+-0.2519299499590083
+11
+0.15427495708110595
+21
+0.08907068800000262
+31
+-0.3085499141622349
+12
+0.12596497497949322
+22
+0.1259649749795123
+32
+-0.30854991416223376
+13
+0.12596497497949322
+23
+0.1259649749795123
+33
+-0.30854991416223376
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.15427495708110595
+20
+0.08907068800000262
+30
+-0.3085499141622349
+11
+0.17814137599999402
+21
+0.17814137600000535
+31
+-0.2519299499590083
+12
+0.2181777366386336
+22
+0.1259649749795123
+32
+-0.251929949959006
+13
+0.2181777366386336
+23
+0.1259649749795123
+33
+-0.251929949959006
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999402
+20
+0.17814137600000535
+30
+-0.2519299499590083
+11
+0.26721206399999353
+21
+0.15427495708112848
+31
+-0.1781413760000044
+12
+0.2181777366386336
+22
+0.1259649749795123
+32
+-0.251929949959006
+13
+0.2181777366386336
+23
+0.1259649749795123
+33
+-0.251929949959006
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.26721206399999353
+20
+0.15427495708112848
+30
+-0.1781413760000044
+11
+0.17814137599999402
+21
+0.17814137600000535
+31
+-0.2519299499590083
+12
+0.2181777366386336
+22
+0.2181777366386538
+32
+-0.17814137600000107
+13
+0.2181777366386336
+23
+0.2181777366386538
+33
+-0.17814137600000107
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2181777366386336
+20
+0.2181777366386538
+30
+-0.17814137600000107
+11
+0.2980363307885675
+21
+0.17207135580907973
+31
+-0.0922127616591381
+12
+0.26721206399999353
+22
+0.15427495708112848
+32
+-0.1781413760000044
+13
+0.26721206399999353
+23
+0.15427495708112848
+33
+-0.1781413760000044
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2980363307885675
+20
+0.17207135580907973
+30
+-0.0922127616591381
+11
+0.2181777366386336
+21
+0.2181777366386538
+31
+-0.17814137600000107
+12
+0.24334564508110534
+22
+0.24334564508112222
+32
+-0.09221276165913922
+13
+0.24334564508110534
+23
+0.24334564508112222
+33
+-0.09221276165913922
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.24334564508110534
+20
+0.24334564508112222
+30
+-0.09221276165913922
+11
+0.30854991416222677
+21
+0.17814137600001212
+31
+-3.291745508012748e-15
+12
+0.2980363307885675
+22
+0.17207135580907973
+32
+-0.0922127616591381
+13
+0.2980363307885675
+23
+0.17207135580907973
+33
+-0.0922127616591381
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222677
+20
+0.17814137600001212
+30
+-3.291745508012748e-15
+11
+0.24334564508110534
+21
+0.24334564508112222
+31
+-0.09221276165913922
+12
+0.25192994995899565
+22
+0.2519299499590114
+32
+1.1796636210961499e-15
+13
+0.25192994995899565
+23
+0.2519299499590114
+33
+1.1796636210961499e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.06520426908110866
+20
+0.06520426908112797
+30
+-0.3441427116181431
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+0.04610638082956259
+22
+0.07985859414994045
+32
+-0.34414271161814086
+13
+0.04610638082956259
+23
+0.07985859414994045
+33
+-0.34414271161814086
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.08907068799999018
+20
+0.1542749570811307
+30
+-0.30854991416223265
+11
+0.06520426908110866
+21
+0.06520426908112797
+31
+-0.3441427116181431
+12
+0.04610638082956259
+22
+0.07985859414994045
+32
+-0.34414271161814086
+13
+0.04610638082956259
+23
+0.07985859414994045
+33
+-0.34414271161814086
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.06520426908110866
+20
+0.06520426908112797
+30
+-0.3441427116181431
+11
+0.08907068799999018
+21
+0.1542749570811307
+31
+-0.30854991416223265
+12
+0.12596497497949322
+22
+0.1259649749795123
+32
+-0.30854991416223376
+13
+0.12596497497949322
+23
+0.1259649749795123
+33
+-0.30854991416223376
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.12596497497949433
+20
+0.2181777366386516
+30
+-0.251929949959006
+11
+0.12596497497949322
+21
+0.1259649749795123
+31
+-0.30854991416223376
+12
+0.08907068799999018
+22
+0.1542749570811307
+32
+-0.30854991416223265
+13
+0.08907068799999018
+23
+0.1542749570811307
+33
+-0.30854991416223265
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.12596497497949322
+20
+0.1259649749795123
+30
+-0.30854991416223376
+11
+0.12596497497949433
+21
+0.2181777366386516
+31
+-0.251929949959006
+12
+0.17814137599999402
+22
+0.17814137600000535
+32
+-0.2519299499590083
+13
+0.17814137599999402
+23
+0.17814137600000535
+33
+-0.2519299499590083
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.12596497497949433
+20
+0.2181777366386516
+30
+-0.251929949959006
+11
+0.2181777366386336
+21
+0.2181777366386538
+31
+-0.17814137600000107
+12
+0.17814137599999402
+22
+0.17814137600000535
+32
+-0.2519299499590083
+13
+0.17814137599999402
+23
+0.17814137600000535
+33
+-0.2519299499590083
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2181777366386336
+20
+0.2181777366386538
+30
+-0.17814137600000107
+11
+0.12596497497949433
+21
+0.2181777366386516
+31
+-0.251929949959006
+12
+0.15427495708110595
+22
+0.26721206400000586
+32
+-0.1781413760000033
+13
+0.15427495708110595
+23
+0.26721206400000586
+33
+-0.1781413760000033
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17207135580906951
+20
+0.2980363307885766
+30
+-0.09221276165913922
+11
+0.2181777366386336
+21
+0.2181777366386538
+31
+-0.17814137600000107
+12
+0.15427495708110595
+22
+0.26721206400000586
+32
+-0.1781413760000033
+13
+0.15427495708110595
+23
+0.26721206400000586
+33
+-0.1781413760000033
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2181777366386336
+20
+0.2181777366386538
+30
+-0.17814137600000107
+11
+0.17207135580906951
+21
+0.2980363307885766
+31
+-0.09221276165913922
+12
+0.24334564508110534
+22
+0.24334564508112222
+32
+-0.09221276165913922
+13
+0.24334564508110534
+23
+0.24334564508112222
+33
+-0.09221276165913922
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1781413759999918
+20
+0.30854991416223687
+30
+-1.064187472047551e-15
+11
+0.24334564508110534
+21
+0.24334564508112222
+31
+-0.09221276165913922
+12
+0.17207135580906951
+22
+0.2980363307885766
+32
+-0.09221276165913922
+13
+0.17207135580906951
+23
+0.2980363307885766
+33
+-0.09221276165913922
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.24334564508110534
+20
+0.24334564508112222
+30
+-0.09221276165913922
+11
+0.1781413759999918
+21
+0.30854991416223687
+31
+-1.064187472047551e-15
+12
+0.25192994995899565
+22
+0.2519299499590114
+32
+1.1796636210961499e-15
+13
+0.25192994995899565
+23
+0.2519299499590114
+33
+1.1796636210961499e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.04610638082956259
+20
+0.07985859414994045
+30
+-0.34414271161814086
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+0.023866418918875476
+22
+0.0890706880000004
+32
+-0.3441427116181442
+13
+0.023866418918875476
+23
+0.0890706880000004
+33
+-0.3441427116181442
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.04610638082956142
+20
+0.1720713558090775
+30
+-0.30854991416223154
+11
+0.04610638082956259
+21
+0.07985859414994045
+31
+-0.34414271161814086
+12
+0.023866418918875476
+22
+0.0890706880000004
+32
+-0.3441427116181442
+13
+0.023866418918875476
+23
+0.0890706880000004
+33
+-0.3441427116181442
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.04610638082956259
+20
+0.07985859414994045
+30
+-0.34414271161814086
+11
+0.04610638082956142
+21
+0.1720713558090775
+31
+-0.30854991416223154
+12
+0.08907068799999018
+22
+0.1542749570811307
+32
+-0.30854991416223265
+13
+0.08907068799999018
+23
+0.1542749570811307
+33
+-0.30854991416223265
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.06520426908110644
+20
+0.24334564508112
+30
+-0.2519299499590083
+11
+0.08907068799999018
+21
+0.1542749570811307
+31
+-0.30854991416223265
+12
+0.04610638082956142
+22
+0.1720713558090775
+32
+-0.30854991416223154
+13
+0.04610638082956142
+23
+0.1720713558090775
+33
+-0.30854991416223154
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.08907068799999018
+20
+0.1542749570811307
+30
+-0.30854991416223265
+11
+0.06520426908110644
+21
+0.24334564508112
+31
+-0.2519299499590083
+12
+0.12596497497949433
+22
+0.2181777366386516
+32
+-0.251929949959006
+13
+0.12596497497949433
+23
+0.2181777366386516
+33
+-0.251929949959006
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.07985859414992247
+20
+0.29803633078857883
+30
+-0.1781413760000033
+11
+0.12596497497949433
+21
+0.2181777366386516
+31
+-0.251929949959006
+12
+0.06520426908110644
+22
+0.24334564508112
+32
+-0.2519299499590083
+13
+0.06520426908110644
+23
+0.24334564508112
+33
+-0.2519299499590083
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.12596497497949433
+20
+0.2181777366386516
+30
+-0.251929949959006
+11
+0.07985859414992247
+21
+0.29803633078857883
+31
+-0.1781413760000033
+12
+0.15427495708110595
+22
+0.26721206400000586
+32
+-0.1781413760000033
+13
+0.15427495708110595
+23
+0.26721206400000586
+33
+-0.1781413760000033
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.08907068799998785
+20
+0.3324163330811273
+30
+-0.09221276165914372
+11
+0.15427495708110595
+21
+0.26721206400000586
+31
+-0.1781413760000033
+12
+0.07985859414992247
+22
+0.29803633078857883
+32
+-0.1781413760000033
+13
+0.07985859414992247
+23
+0.29803633078857883
+33
+-0.1781413760000033
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.15427495708110595
+20
+0.26721206400000586
+30
+-0.1781413760000033
+11
+0.08907068799998785
+21
+0.3324163330811273
+31
+-0.09221276165914372
+12
+0.17207135580906951
+22
+0.2980363307885766
+32
+-0.09221276165913922
+13
+0.17207135580906951
+23
+0.2980363307885766
+33
+-0.09221276165913922
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165912884
+20
+0.34414271161815735
+30
+4.776934118879337e-17
+11
+0.17207135580906951
+21
+0.2980363307885766
+31
+-0.09221276165913922
+12
+0.08907068799998785
+22
+0.3324163330811273
+32
+-0.09221276165914372
+13
+0.08907068799998785
+23
+0.3324163330811273
+33
+-0.09221276165914372
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17207135580906951
+20
+0.2980363307885766
+30
+-0.09221276165913922
+11
+0.09221276165912884
+21
+0.34414271161815735
+31
+4.776934118879337e-17
+12
+0.1781413759999918
+22
+0.30854991416223687
+32
+-1.064187472047551e-15
+13
+0.1781413759999918
+23
+0.30854991416223687
+33
+-1.064187472047551e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.023866418918875476
+20
+0.0890706880000004
+30
+-0.3441427116181442
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+-1.1546319456101628e-14
+22
+0.09221276165914805
+32
+-0.3441427116181453
+13
+-1.1546319456101628e-14
+23
+0.09221276165914805
+33
+-0.3441427116181453
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.17814137600000535
+30
+-0.30854991416222927
+11
+0.023866418918875476
+21
+0.0890706880000004
+31
+-0.3441427116181442
+12
+-1.1546319456101628e-14
+22
+0.09221276165914805
+32
+-0.3441427116181453
+13
+-1.1546319456101628e-14
+23
+0.09221276165914805
+33
+-0.3441427116181453
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.023866418918875476
+20
+0.0890706880000004
+30
+-0.3441427116181442
+11
+-7.049916206369744e-15
+21
+0.17814137600000535
+31
+-0.30854991416222927
+12
+0.04610638082956142
+22
+0.1720713558090775
+32
+-0.30854991416223154
+13
+0.04610638082956142
+23
+0.1720713558090775
+33
+-0.30854991416223154
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.06520426908110644
+20
+0.24334564508112
+30
+-0.2519299499590083
+11
+-7.049916206369744e-15
+21
+0.17814137600000535
+31
+-0.30854991416222927
+12
+-1.0436096431476471e-14
+22
+0.2519299499590092
+32
+-0.2519299499590072
+13
+-1.0436096431476471e-14
+23
+0.2519299499590092
+33
+-0.2519299499590072
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.17814137600000535
+30
+-0.30854991416222927
+11
+0.06520426908110644
+21
+0.24334564508112
+31
+-0.2519299499590083
+12
+0.04610638082956142
+22
+0.1720713558090775
+32
+-0.30854991416223154
+13
+0.04610638082956142
+23
+0.1720713558090775
+33
+-0.30854991416223154
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-1.0436096431476471e-14
+20
+0.2519299499590092
+30
+-0.2519299499590072
+11
+0.07985859414992247
+21
+0.29803633078857883
+31
+-0.1781413760000033
+12
+0.06520426908110644
+22
+0.24334564508112
+32
+-0.2519299499590083
+13
+0.06520426908110644
+23
+0.24334564508112
+33
+-0.2519299499590083
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.07985859414992247
+20
+0.29803633078857883
+30
+-0.1781413760000033
+11
+-1.0436096431476471e-14
+21
+0.2519299499590092
+31
+-0.2519299499590072
+12
+-7.049916206369744e-15
+22
+0.30854991416224353
+32
+-0.17814137600000332
+13
+-7.049916206369744e-15
+23
+0.30854991416224353
+33
+-0.17814137600000332
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-1.1546319456101628e-14
+20
+0.3441427116181529
+30
+-0.09221276165914259
+11
+0.07985859414992247
+21
+0.29803633078857883
+31
+-0.1781413760000033
+12
+-7.049916206369744e-15
+22
+0.30854991416224353
+32
+-0.17814137600000332
+13
+-7.049916206369744e-15
+23
+0.30854991416224353
+33
+-0.17814137600000332
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.07985859414992247
+20
+0.29803633078857883
+30
+-0.1781413760000033
+11
+-1.1546319456101628e-14
+21
+0.3441427116181529
+31
+-0.09221276165914259
+12
+0.08907068799998785
+22
+0.3324163330811273
+32
+-0.09221276165914372
+13
+0.08907068799998785
+23
+0.3324163330811273
+33
+-0.09221276165914372
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-1.1546319456101628e-14
+20
+0.3441427116181529
+30
+-0.09221276165914259
+11
+0.09221276165912884
+21
+0.34414271161815735
+31
+4.776934118879337e-17
+12
+0.08907068799998785
+22
+0.3324163330811273
+32
+-0.09221276165914372
+13
+0.08907068799998785
+23
+0.3324163330811273
+33
+-0.09221276165914372
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165912884
+20
+0.34414271161815735
+30
+4.776934118879337e-17
+11
+-1.1546319456101628e-14
+21
+0.3441427116181529
+31
+-0.09221276165914259
+12
+-7.049916206369744e-15
+22
+0.35628275200001536
+32
+-1.0788020009459382e-15
+13
+-7.049916206369744e-15
+23
+0.35628275200001536
+33
+-1.0788020009459382e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.02386641891888963
+21
+0.08907068800000262
+31
+-0.3441427116181476
+12
+-1.1546319456101628e-14
+22
+0.09221276165914805
+32
+-0.3441427116181453
+13
+-1.1546319456101628e-14
+23
+0.09221276165914805
+33
+-0.3441427116181453
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.17814137600000535
+30
+-0.30854991416222927
+11
+-0.02386641891888963
+21
+0.08907068800000262
+31
+-0.3441427116181476
+12
+-0.04610638082957336
+22
+0.17207135580908417
+32
+-0.3085499141622349
+13
+-0.04610638082957336
+23
+0.17207135580908417
+33
+-0.3085499141622349
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.02386641891888963
+20
+0.08907068800000262
+30
+-0.3441427116181476
+11
+-7.049916206369744e-15
+21
+0.17814137600000535
+31
+-0.30854991416222927
+12
+-1.1546319456101628e-14
+22
+0.09221276165914805
+32
+-0.3441427116181453
+13
+-1.1546319456101628e-14
+23
+0.09221276165914805
+33
+-0.3441427116181453
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-1.0436096431476471e-14
+20
+0.2519299499590092
+30
+-0.2519299499590072
+11
+-0.04610638082957336
+21
+0.17207135580908417
+31
+-0.3085499141622349
+12
+-0.06520426908112398
+22
+0.243345645081129
+32
+-0.251929949959006
+13
+-0.06520426908112398
+23
+0.243345645081129
+33
+-0.251929949959006
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.04610638082957336
+20
+0.17207135580908417
+30
+-0.3085499141622349
+11
+-1.0436096431476471e-14
+21
+0.2519299499590092
+31
+-0.2519299499590072
+12
+-7.049916206369744e-15
+22
+0.17814137600000535
+32
+-0.30854991416222927
+13
+-7.049916206369744e-15
+23
+0.17814137600000535
+33
+-0.30854991416222927
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.06520426908112398
+20
+0.243345645081129
+30
+-0.251929949959006
+11
+-7.049916206369744e-15
+21
+0.30854991416224353
+31
+-0.17814137600000332
+12
+-1.0436096431476471e-14
+22
+0.2519299499590092
+32
+-0.2519299499590072
+13
+-1.0436096431476471e-14
+23
+0.2519299499590092
+33
+-0.2519299499590072
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.30854991416224353
+30
+-0.17814137600000332
+11
+-0.06520426908112398
+21
+0.243345645081129
+31
+-0.251929949959006
+12
+-0.07985859414994106
+22
+0.2980363307885855
+32
+-0.17814137600000443
+13
+-0.07985859414994106
+23
+0.2980363307885855
+33
+-0.17814137600000443
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800001211
+20
+0.3324163330811183
+30
+-0.09221276165914037
+11
+-7.049916206369744e-15
+21
+0.30854991416224353
+31
+-0.17814137600000332
+12
+-0.07985859414994106
+22
+0.2980363307885855
+32
+-0.17814137600000443
+13
+-0.07985859414994106
+23
+0.2980363307885855
+33
+-0.17814137600000443
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.30854991416224353
+30
+-0.17814137600000332
+11
+-0.08907068800001211
+21
+0.3324163330811183
+31
+-0.09221276165914037
+12
+-1.1546319456101628e-14
+22
+0.3441427116181529
+32
+-0.09221276165914259
+13
+-1.1546319456101628e-14
+23
+0.3441427116181529
+33
+-0.09221276165914259
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800001211
+20
+0.3324163330811183
+30
+-0.09221276165914037
+11
+-7.049916206369744e-15
+21
+0.35628275200001536
+31
+-1.0788020009459382e-15
+12
+-1.1546319456101628e-14
+22
+0.3441427116181529
+32
+-0.09221276165914259
+13
+-1.1546319456101628e-14
+23
+0.3441427116181529
+33
+-0.09221276165914259
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.35628275200001536
+30
+-1.0788020009459382e-15
+11
+-0.08907068800001211
+21
+0.3324163330811183
+31
+-0.09221276165914037
+12
+-0.0922127616591486
+22
+0.34414271161815735
+32
+-2.205457581532869e-15
+13
+-0.0922127616591486
+23
+0.34414271161815735
+33
+-2.205457581532869e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.04610638082957785
+21
+0.079858594149945
+31
+-0.34414271161814647
+12
+-0.02386641891888963
+22
+0.08907068800000262
+32
+-0.3441427116181476
+13
+-0.02386641891888963
+23
+0.08907068800000262
+33
+-0.3441427116181476
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.04610638082957336
+20
+0.17207135580908417
+30
+-0.3085499141622349
+11
+-0.04610638082957785
+21
+0.079858594149945
+31
+-0.34414271161814647
+12
+-0.08907068800000761
+22
+0.15427495708112615
+32
+-0.30854991416222927
+13
+-0.08907068800000761
+23
+0.15427495708112615
+33
+-0.30854991416222927
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.04610638082957785
+20
+0.079858594149945
+30
+-0.34414271161814647
+11
+-0.04610638082957336
+21
+0.17207135580908417
+31
+-0.3085499141622349
+12
+-0.02386641891888963
+22
+0.08907068800000262
+32
+-0.3441427116181476
+13
+-0.02386641891888963
+23
+0.08907068800000262
+33
+-0.3441427116181476
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.06520426908112398
+20
+0.243345645081129
+30
+-0.251929949959006
+11
+-0.08907068800000761
+21
+0.15427495708112615
+31
+-0.30854991416222927
+12
+-0.12596497497951514
+22
+0.21817773663864937
+32
+-0.2519299499590072
+13
+-0.12596497497951514
+23
+0.21817773663864937
+33
+-0.2519299499590072
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800000761
+20
+0.15427495708112615
+30
+-0.30854991416222927
+11
+-0.06520426908112398
+21
+0.243345645081129
+31
+-0.251929949959006
+12
+-0.04610638082957336
+22
+0.17207135580908417
+32
+-0.3085499141622349
+13
+-0.04610638082957336
+23
+0.17207135580908417
+33
+-0.3085499141622349
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.15427495708112787
+20
+0.2672120640000014
+30
+-0.17814137599999996
+11
+-0.06520426908112398
+21
+0.243345645081129
+31
+-0.251929949959006
+12
+-0.12596497497951514
+22
+0.21817773663864937
+32
+-0.2519299499590072
+13
+-0.12596497497951514
+23
+0.21817773663864937
+33
+-0.2519299499590072
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.06520426908112398
+20
+0.243345645081129
+30
+-0.251929949959006
+11
+-0.15427495708112787
+21
+0.2672120640000014
+31
+-0.17814137599999996
+12
+-0.07985859414994106
+22
+0.2980363307885855
+32
+-0.17814137600000443
+13
+-0.07985859414994106
+23
+0.2980363307885855
+33
+-0.17814137600000443
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.15427495708112787
+20
+0.2672120640000014
+30
+-0.17814137599999996
+11
+-0.08907068800001211
+21
+0.3324163330811183
+31
+-0.09221276165914037
+12
+-0.07985859414994106
+22
+0.2980363307885855
+32
+-0.17814137600000443
+13
+-0.07985859414994106
+23
+0.2980363307885855
+33
+-0.17814137600000443
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800001211
+20
+0.3324163330811183
+30
+-0.09221276165914037
+11
+-0.15427495708112787
+21
+0.2672120640000014
+31
+-0.17814137599999996
+12
+-0.17207135580907917
+22
+0.2980363307885855
+32
+-0.0922127616591415
+13
+-0.17207135580907917
+23
+0.2980363307885855
+33
+-0.0922127616591415
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600000818
+20
+0.30854991416224353
+30
+-6.688561244316844e-15
+11
+-0.08907068800001211
+21
+0.3324163330811183
+31
+-0.09221276165914037
+12
+-0.17207135580907917
+22
+0.2980363307885855
+32
+-0.0922127616591415
+13
+-0.17207135580907917
+23
+0.2980363307885855
+33
+-0.0922127616591415
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800001211
+20
+0.3324163330811183
+30
+-0.09221276165914037
+11
+-0.17814137600000818
+21
+0.30854991416224353
+31
+-6.688561244316844e-15
+12
+-0.0922127616591486
+22
+0.34414271161815735
+32
+-2.205457581532869e-15
+13
+-0.0922127616591486
+23
+0.34414271161815735
+33
+-2.205457581532869e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.06520426908112176
+21
+0.06520426908111898
+31
+-0.3441427116181431
+12
+-0.04610638082957785
+22
+0.079858594149945
+32
+-0.34414271161814647
+13
+-0.04610638082957785
+23
+0.079858594149945
+33
+-0.34414271161814647
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800000761
+20
+0.15427495708112615
+30
+-0.30854991416222927
+11
+-0.06520426908112176
+21
+0.06520426908111898
+31
+-0.3441427116181431
+12
+-0.1259649749795107
+22
+0.12596497497950565
+32
+-0.30854991416223826
+13
+-0.1259649749795107
+23
+0.12596497497950565
+33
+-0.30854991416223826
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.06520426908112176
+20
+0.06520426908111898
+30
+-0.3441427116181431
+11
+-0.08907068800000761
+21
+0.15427495708112615
+31
+-0.30854991416222927
+12
+-0.04610638082957785
+22
+0.079858594149945
+32
+-0.34414271161814647
+13
+-0.04610638082957785
+23
+0.079858594149945
+33
+-0.34414271161814647
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.12596497497951514
+20
+0.21817773663864937
+30
+-0.2519299499590072
+11
+-0.1259649749795107
+21
+0.12596497497950565
+31
+-0.30854991416223826
+12
+-0.17814137600001045
+22
+0.1781413760000099
+32
+-0.25192994995900836
+13
+-0.17814137600001045
+23
+0.1781413760000099
+33
+-0.25192994995900836
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.1259649749795107
+20
+0.12596497497950565
+30
+-0.30854991416223826
+11
+-0.12596497497951514
+21
+0.21817773663864937
+31
+-0.2519299499590072
+12
+-0.08907068800000761
+22
+0.15427495708112615
+32
+-0.30854991416222927
+13
+-0.08907068800000761
+23
+0.15427495708112615
+33
+-0.30854991416222927
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21817773663864884
+20
+0.2181777366386538
+30
+-0.17814137600000332
+11
+-0.12596497497951514
+21
+0.21817773663864937
+31
+-0.2519299499590072
+12
+-0.17814137600001045
+22
+0.1781413760000099
+32
+-0.25192994995900836
+13
+-0.17814137600001045
+23
+0.1781413760000099
+33
+-0.25192994995900836
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.12596497497951514
+20
+0.21817773663864937
+30
+-0.2519299499590072
+11
+-0.21817773663864884
+21
+0.2181777366386538
+31
+-0.17814137600000332
+12
+-0.15427495708112787
+22
+0.2672120640000014
+32
+-0.17814137599999996
+13
+-0.15427495708112787
+23
+0.2672120640000014
+33
+-0.17814137599999996
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.24334564508112175
+20
+0.24334564508111778
+30
+-0.09221276165914039
+11
+-0.15427495708112787
+21
+0.2672120640000014
+31
+-0.17814137599999996
+12
+-0.21817773663864884
+22
+0.2181777366386538
+32
+-0.17814137600000332
+13
+-0.21817773663864884
+23
+0.2181777366386538
+33
+-0.17814137600000332
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.15427495708112787
+20
+0.2672120640000014
+30
+-0.17814137599999996
+11
+-0.24334564508112175
+21
+0.24334564508111778
+31
+-0.09221276165914039
+12
+-0.17207135580907917
+22
+0.2980363307885855
+32
+-0.0922127616591415
+13
+-0.17207135580907917
+23
+0.2980363307885855
+33
+-0.0922127616591415
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.24334564508112175
+20
+0.24334564508111778
+30
+-0.09221276165914039
+11
+-0.17814137600000818
+21
+0.30854991416224353
+31
+-6.688561244316844e-15
+12
+-0.17207135580907917
+22
+0.2980363307885855
+32
+-0.0922127616591415
+13
+-0.17207135580907917
+23
+0.2980363307885855
+33
+-0.0922127616591415
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600000818
+20
+0.30854991416224353
+30
+-6.688561244316844e-15
+11
+-0.24334564508112175
+21
+0.24334564508111778
+31
+-0.09221276165914039
+12
+-0.2519299499590143
+22
+0.2519299499590092
+32
+-3.337991716009964e-15
+13
+-0.2519299499590143
+23
+0.2519299499590092
+33
+-3.337991716009964e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.0798585941499399
+21
+0.04610638082957841
+31
+-0.3441427116181442
+12
+-0.06520426908112176
+22
+0.06520426908111898
+32
+-0.3441427116181431
+13
+-0.06520426908112176
+23
+0.06520426908111898
+33
+-0.3441427116181431
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.1259649749795107
+20
+0.12596497497950565
+30
+-0.30854991416223826
+11
+-0.0798585941499399
+21
+0.04610638082957841
+31
+-0.3441427116181442
+12
+-0.15427495708112454
+22
+0.08907068800001161
+32
+-0.3085499141622316
+13
+-0.15427495708112454
+23
+0.08907068800001161
+33
+-0.3085499141622316
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.0798585941499399
+20
+0.04610638082957841
+30
+-0.3441427116181442
+11
+-0.1259649749795107
+21
+0.12596497497950565
+31
+-0.30854991416223826
+12
+-0.06520426908112176
+22
+0.06520426908111898
+32
+-0.3441427116181431
+13
+-0.06520426908112176
+23
+0.06520426908111898
+33
+-0.3441427116181431
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600001045
+20
+0.1781413760000099
+30
+-0.25192994995900836
+11
+-0.15427495708112454
+21
+0.08907068800001161
+31
+-0.3085499141622316
+12
+-0.2181777366386477
+22
+0.12596497497951464
+32
+-0.2519299499590061
+13
+-0.2181777366386477
+23
+0.12596497497951464
+33
+-0.2519299499590061
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.15427495708112454
+20
+0.08907068800001161
+30
+-0.3085499141622316
+11
+-0.17814137600001045
+21
+0.1781413760000099
+31
+-0.25192994995900836
+12
+-0.1259649749795107
+22
+0.12596497497950565
+32
+-0.30854991416223826
+13
+-0.1259649749795107
+23
+0.12596497497950565
+33
+-0.30854991416223826
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.26721206400000763
+20
+0.15427495708112615
+30
+-0.17814137599999885
+11
+-0.17814137600001045
+21
+0.1781413760000099
+31
+-0.25192994995900836
+12
+-0.2181777366386477
+22
+0.12596497497951464
+32
+-0.2519299499590061
+13
+-0.2181777366386477
+23
+0.12596497497951464
+33
+-0.2519299499590061
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600001045
+20
+0.1781413760000099
+30
+-0.25192994995900836
+11
+-0.26721206400000763
+21
+0.15427495708112615
+31
+-0.17814137599999885
+12
+-0.21817773663864884
+22
+0.2181777366386538
+32
+-0.17814137600000332
+13
+-0.21817773663864884
+23
+0.2181777366386538
+33
+-0.17814137600000332
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.29803633078858505
+20
+0.17207135580907973
+30
+-0.09221276165914039
+11
+-0.21817773663864884
+21
+0.2181777366386538
+31
+-0.17814137600000332
+12
+-0.26721206400000763
+22
+0.15427495708112615
+32
+-0.17814137599999885
+13
+-0.26721206400000763
+23
+0.15427495708112615
+33
+-0.17814137599999885
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21817773663864884
+20
+0.2181777366386538
+30
+-0.17814137600000332
+11
+-0.29803633078858505
+21
+0.17207135580907973
+31
+-0.09221276165914039
+12
+-0.24334564508112175
+22
+0.24334564508111778
+32
+-0.09221276165914039
+13
+-0.24334564508112175
+23
+0.24334564508111778
+33
+-0.09221276165914039
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.30854991416224087
+20
+0.17814137600001434
+30
+-1.1050199985371004e-15
+11
+-0.24334564508112175
+21
+0.24334564508111778
+31
+-0.09221276165914039
+12
+-0.29803633078858505
+22
+0.17207135580907973
+32
+-0.09221276165914039
+13
+-0.29803633078858505
+23
+0.17207135580907973
+33
+-0.09221276165914039
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.24334564508112175
+20
+0.24334564508111778
+30
+-0.09221276165914039
+11
+-0.30854991416224087
+21
+0.17814137600001434
+31
+-1.1050199985371004e-15
+12
+-0.2519299499590143
+22
+0.2519299499590092
+32
+-3.337991716009964e-15
+13
+-0.2519299499590143
+23
+0.2519299499590092
+33
+-3.337991716009964e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.08907068800000317
+21
+0.023866418918890242
+31
+-0.3441427116181431
+12
+-0.0798585941499399
+22
+0.04610638082957841
+32
+-0.3441427116181442
+13
+-0.0798585941499399
+23
+0.04610638082957841
+33
+-0.3441427116181442
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.15427495708112454
+20
+0.08907068800001161
+30
+-0.3085499141622316
+11
+-0.08907068800000317
+21
+0.023866418918890242
+31
+-0.3441427116181431
+12
+-0.17207135580908034
+22
+0.04610638082957169
+32
+-0.30854991416223604
+13
+-0.17207135580908034
+23
+0.04610638082957169
+33
+-0.30854991416223604
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800000317
+20
+0.023866418918890242
+30
+-0.3441427116181431
+11
+-0.15427495708112454
+21
+0.08907068800001161
+31
+-0.3085499141622316
+12
+-0.0798585941499399
+22
+0.04610638082957841
+32
+-0.3441427116181442
+13
+-0.0798585941499399
+23
+0.04610638082957841
+33
+-0.3441427116181442
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2181777366386477
+20
+0.12596497497951464
+30
+-0.2519299499590061
+11
+-0.17207135580908034
+21
+0.04610638082957169
+31
+-0.30854991416223604
+12
+-0.24334564508112397
+22
+0.06520426908111898
+32
+-0.251929949959005
+13
+-0.24334564508112397
+23
+0.06520426908111898
+33
+-0.251929949959005
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17207135580908034
+20
+0.04610638082957169
+30
+-0.30854991416223604
+11
+-0.2181777366386477
+21
+0.12596497497951464
+31
+-0.2519299499590061
+12
+-0.15427495708112454
+22
+0.08907068800001161
+32
+-0.3085499141622316
+13
+-0.15427495708112454
+23
+0.08907068800001161
+33
+-0.3085499141622316
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.29803633078858727
+20
+0.079858594149945
+30
+-0.1781413760000011
+11
+-0.2181777366386477
+21
+0.12596497497951464
+31
+-0.2519299499590061
+12
+-0.24334564508112397
+22
+0.06520426908111898
+32
+-0.251929949959005
+13
+-0.24334564508112397
+23
+0.06520426908111898
+33
+-0.251929949959005
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2181777366386477
+20
+0.12596497497951464
+30
+-0.2519299499590061
+11
+-0.29803633078858727
+21
+0.079858594149945
+31
+-0.1781413760000011
+12
+-0.26721206400000763
+22
+0.15427495708112615
+32
+-0.17814137599999885
+13
+-0.26721206400000763
+23
+0.15427495708112615
+33
+-0.17814137599999885
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3324163330811223
+20
+0.08907068800000706
+30
+-0.09221276165914039
+11
+-0.26721206400000763
+21
+0.15427495708112615
+31
+-0.17814137599999885
+12
+-0.29803633078858727
+22
+0.079858594149945
+32
+-0.1781413760000011
+13
+-0.29803633078858727
+23
+0.079858594149945
+33
+-0.1781413760000011
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.26721206400000763
+20
+0.15427495708112615
+30
+-0.17814137599999885
+11
+-0.3324163330811223
+21
+0.08907068800000706
+31
+-0.09221276165914039
+12
+-0.29803633078858505
+22
+0.17207135580907973
+32
+-0.09221276165914039
+13
+-0.29803633078858505
+23
+0.17207135580907973
+33
+-0.09221276165914039
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181502
+20
+0.09221276165915027
+30
+-1.1082712068578987e-15
+11
+-0.29803633078858505
+21
+0.17207135580907973
+31
+-0.09221276165914039
+12
+-0.3324163330811223
+22
+0.08907068800000706
+32
+-0.09221276165914039
+13
+-0.3324163330811223
+23
+0.08907068800000706
+33
+-0.09221276165914039
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.29803633078858505
+20
+0.17207135580907973
+30
+-0.09221276165914039
+11
+-0.3441427116181502
+21
+0.09221276165915027
+31
+-1.1082712068578987e-15
+12
+-0.30854991416224087
+22
+0.17814137600001434
+32
+-1.1050199985371004e-15
+13
+-0.30854991416224087
+23
+0.17814137600001434
+33
+-1.1050199985371004e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.09221276165914521
+21
+8.826273045769994e-15
+31
+-0.34414271161814647
+12
+-0.08907068800000317
+22
+0.023866418918890242
+32
+-0.3441427116181431
+13
+-0.08907068800000317
+23
+0.023866418918890242
+33
+-0.3441427116181431
+70
+0
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17207135580908034
+20
+0.04610638082957169
+30
+-0.30854991416223604
+11
+-0.09221276165914521
+21
+8.826273045769994e-15
+31
+-0.34414271161814647
+12
+-0.17814137600000707
+22
+1.3322676295501878e-14
+32
+-0.30854991416223604
+13
+-0.17814137600000707
+23
+1.3322676295501878e-14
+33
+-0.30854991416223604
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.09221276165914521
+20
+8.826273045769994e-15
+30
+-0.34414271161814647
+11
+-0.17207135580908034
+21
+0.04610638082957169
+31
+-0.30854991416223604
+12
+-0.08907068800000317
+22
+0.023866418918890242
+32
+-0.3441427116181431
+13
+-0.08907068800000317
+23
+0.023866418918890242
+33
+-0.3441427116181431
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.24334564508112397
+20
+0.06520426908111898
+30
+-0.251929949959005
+11
+-0.17814137600000707
+21
+1.3322676295501878e-14
+31
+-0.30854991416223604
+12
+-0.2519299499590165
+22
+1.3322676295501878e-14
+32
+-0.251929949959005
+13
+-0.2519299499590165
+23
+1.3322676295501878e-14
+33
+-0.251929949959005
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600000707
+20
+1.3322676295501878e-14
+30
+-0.30854991416223604
+11
+-0.24334564508112397
+21
+0.06520426908111898
+31
+-0.251929949959005
+12
+-0.17207135580908034
+22
+0.04610638082957169
+32
+-0.30854991416223604
+13
+-0.17207135580908034
+23
+0.04610638082957169
+33
+-0.30854991416223604
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.29803633078858727
+20
+0.079858594149945
+30
+-0.1781413760000011
+11
+-0.2519299499590165
+21
+1.3322676295501878e-14
+31
+-0.251929949959005
+12
+-0.30854991416223865
+22
+6.6058269965196814e-15
+32
+-0.178141376
+13
+-0.30854991416223865
+23
+6.6058269965196814e-15
+33
+-0.178141376
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2519299499590165
+20
+1.3322676295501878e-14
+30
+-0.251929949959005
+11
+-0.29803633078858727
+21
+0.079858594149945
+31
+-0.1781413760000011
+12
+-0.24334564508112397
+22
+0.06520426908111898
+32
+-0.251929949959005
+13
+-0.24334564508112397
+23
+0.06520426908111898
+33
+-0.251929949959005
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181536
+20
+1.3322676295501878e-14
+30
+-0.09221276165913815
+11
+-0.29803633078858727
+21
+0.079858594149945
+31
+-0.1781413760000011
+12
+-0.30854991416223865
+22
+6.6058269965196814e-15
+32
+-0.178141376
+13
+-0.30854991416223865
+23
+6.6058269965196814e-15
+33
+-0.178141376
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.29803633078858727
+20
+0.079858594149945
+30
+-0.1781413760000011
+11
+-0.3441427116181536
+21
+1.3322676295501878e-14
+31
+-0.09221276165913815
+12
+-0.3324163330811223
+22
+0.08907068800000706
+32
+-0.09221276165914039
+13
+-0.3324163330811223
+23
+0.08907068800000706
+33
+-0.09221276165914039
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181502
+20
+0.09221276165915027
+30
+-1.1082712068578987e-15
+11
+-0.3441427116181536
+21
+1.3322676295501878e-14
+31
+-0.09221276165913815
+12
+-0.35628275200001047
+22
+1.3322676295501878e-14
+32
+1.1283270246018505e-15
+13
+-0.35628275200001047
+23
+1.3322676295501878e-14
+33
+1.1283270246018505e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181536
+20
+1.3322676295501878e-14
+30
+-0.09221276165913815
+11
+-0.3441427116181502
+21
+0.09221276165915027
+31
+-1.1082712068578987e-15
+12
+-0.3324163330811223
+22
+0.08907068800000706
+32
+-0.09221276165914039
+13
+-0.3324163330811223
+23
+0.08907068800000706
+33
+-0.09221276165914039
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.4349737833450727
+20
+0.11655087397603592
+30
+-1.1157228913145438e-15
+11
+-0.35628275200001047
+21
+1.3322676295501878e-14
+31
+1.1283270246018505e-15
+12
+-0.4503179970000113
+22
+8.826273045769994e-15
+32
+-4.474288446697922e-15
+13
+-0.4503179970000113
+23
+8.826273045769994e-15
+33
+-4.474288446697922e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35628275200001047
+20
+1.3322676295501878e-14
+30
+1.1283270246018505e-15
+11
+-0.4349737833450727
+21
+0.11655087397603592
+31
+-1.1157228913145438e-15
+12
+-0.38998682518333744
+22
+0.22515899850000798
+32
+-1.1116135775444189e-15
+13
+-0.38998682518333744
+23
+0.22515899850000798
+33
+-1.1116135775444189e-15
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35628275200001047
+20
+1.3322676295501878e-14
+30
+1.1283270246018505e-15
+11
+-0.38998682518333744
+21
+0.22515899850000798
+31
+-1.1116135775444189e-15
+12
+-0.3184229093690556
+22
+0.31842290936904827
+32
+1.132572953045013e-15
+13
+-0.3184229093690556
+23
+0.31842290936904827
+33
+1.132572953045013e-15
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35628275200001047
+20
+1.3322676295501878e-14
+30
+1.1283270246018505e-15
+11
+-0.3184229093690556
+21
+0.31842290936904827
+31
+1.132572953045013e-15
+12
+-0.3441427116181502
+22
+0.09221276165915027
+32
+-1.1082712068578987e-15
+13
+-0.3441427116181502
+23
+0.09221276165915027
+33
+-1.1082712068578987e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181502
+20
+0.09221276165915027
+30
+-1.1082712068578987e-15
+11
+-0.3184229093690556
+21
+0.31842290936904827
+31
+1.132572953045013e-15
+12
+-0.30854991416224087
+22
+0.17814137600001434
+32
+-1.1050199985371004e-15
+13
+-0.30854991416224087
+23
+0.17814137600001434
+33
+-1.1050199985371004e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.30854991416224087
+20
+0.17814137600001434
+30
+-1.1050199985371004e-15
+11
+-0.3184229093690556
+21
+0.31842290936904827
+31
+1.132572953045013e-15
+12
+-0.2251589985000131
+22
+0.38998682518332894
+32
+-1.0973661868614674e-15
+13
+-0.2251589985000131
+23
+0.38998682518332894
+33
+-1.0973661868614674e-15
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.30854991416224087
+20
+0.17814137600001434
+30
+-1.1050199985371004e-15
+11
+-0.2251589985000131
+21
+0.38998682518332894
+31
+-1.0973661868614674e-15
+12
+-0.2519299499590143
+22
+0.2519299499590092
+32
+-3.337991716009964e-15
+13
+-0.2519299499590143
+23
+0.2519299499590092
+33
+-3.337991716009964e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2519299499590143
+20
+0.2519299499590092
+30
+-3.337991716009964e-15
+11
+-0.2251589985000131
+21
+0.38998682518332894
+31
+-1.0973661868614674e-15
+12
+-0.17814137600000818
+22
+0.30854991416224353
+32
+-6.688561244316844e-15
+13
+-0.17814137600000818
+23
+0.30854991416224353
+33
+-6.688561244316844e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600000818
+20
+0.30854991416224353
+30
+-6.688561244316844e-15
+11
+-0.2251589985000131
+21
+0.38998682518332894
+31
+-1.0973661868614674e-15
+12
+-0.11655087397602859
+22
+0.4349737833450731
+32
+-2.2071617463537632e-15
+13
+-0.11655087397602859
+23
+0.4349737833450731
+33
+-2.2071617463537632e-15
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600000818
+20
+0.30854991416224353
+30
+-6.688561244316844e-15
+11
+-0.11655087397602859
+21
+0.4349737833450731
+31
+-2.2071617463537632e-15
+12
+-0.0922127616591486
+22
+0.34414271161815735
+32
+-2.205457581532869e-15
+13
+-0.0922127616591486
+23
+0.34414271161815735
+33
+-2.205457581532869e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.0922127616591486
+20
+0.34414271161815735
+30
+-2.205457581532869e-15
+11
+-0.11655087397602859
+21
+0.4349737833450731
+31
+-2.2071617463537632e-15
+12
+-7.049916206369744e-15
+22
+0.45031799700000497
+32
+1.159449649898216e-15
+13
+-7.049916206369744e-15
+23
+0.45031799700000497
+33
+1.159449649898216e-15
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.0922127616591486
+20
+0.34414271161815735
+30
+-2.205457581532869e-15
+11
+-7.049916206369744e-15
+21
+0.45031799700000497
+31
+1.159449649898216e-15
+12
+-7.049916206369744e-15
+22
+0.35628275200001536
+32
+-1.0788020009459382e-15
+13
+-7.049916206369744e-15
+23
+0.35628275200001536
+33
+-1.0788020009459382e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.35628275200001536
+30
+-1.0788020009459382e-15
+11
+-7.049916206369744e-15
+21
+0.45031799700000497
+31
+1.159449649898216e-15
+12
+0.11655087397601116
+22
+0.4349737833450753
+32
+1.1690664734545857e-15
+13
+0.11655087397601116
+23
+0.4349737833450753
+33
+1.1690664734545857e-15
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.35628275200001536
+30
+-1.0788020009459382e-15
+11
+0.11655087397601116
+21
+0.4349737833450753
+31
+1.1690664734545857e-15
+12
+0.09221276165912884
+22
+0.34414271161815735
+32
+4.776934118879337e-17
+13
+0.09221276165912884
+23
+0.34414271161815735
+33
+4.776934118879337e-17
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165912884
+20
+0.34414271161815735
+30
+4.776934118879337e-17
+11
+0.11655087397601116
+21
+0.4349737833450753
+31
+1.1690664734545857e-15
+12
+0.1781413759999918
+22
+0.30854991416223687
+32
+-1.064187472047551e-15
+13
+0.1781413759999918
+23
+0.30854991416223687
+33
+-1.064187472047551e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1781413759999918
+20
+0.30854991416223687
+30
+-1.064187472047551e-15
+11
+0.11655087397601116
+21
+0.4349737833450753
+31
+1.1690664734545857e-15
+12
+0.22515899849998888
+22
+0.3899868251833378
+32
+-3.297929346592473e-15
+13
+0.22515899849998888
+23
+0.3899868251833378
+33
+-3.297929346592473e-15
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1781413759999918
+20
+0.30854991416223687
+30
+-1.064187472047551e-15
+11
+0.22515899849998888
+21
+0.3899868251833378
+31
+-3.297929346592473e-15
+12
+0.25192994995899565
+22
+0.2519299499590114
+32
+1.1796636210961499e-15
+13
+0.25192994995899565
+23
+0.2519299499590114
+33
+1.1796636210961499e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.25192994995899565
+20
+0.2519299499590114
+30
+1.1796636210961499e-15
+11
+0.22515899849998888
+21
+0.3899868251833378
+31
+-3.297929346592473e-15
+12
+0.31842290936903583
+22
+0.3184229093690527
+32
+-3.290439660368124e-15
+13
+0.31842290936903583
+23
+0.3184229093690527
+33
+-3.290439660368124e-15
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.25192994995899565
+20
+0.2519299499590114
+30
+1.1796636210961499e-15
+11
+0.31842290936903583
+21
+0.3184229093690527
+31
+-3.290439660368124e-15
+12
+0.30854991416222677
+22
+0.17814137600001212
+32
+-3.291745508012748e-15
+13
+0.30854991416222677
+23
+0.17814137600001212
+33
+-3.291745508012748e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222677
+20
+0.17814137600001212
+30
+-3.291745508012748e-15
+11
+0.31842290936903583
+21
+0.3184229093690527
+31
+-3.290439660368124e-15
+12
+0.34414271161813714
+22
+0.0922127616591436
+32
+-1.0511651486801586e-15
+13
+0.34414271161813714
+23
+0.0922127616591436
+33
+-1.0511651486801586e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813714
+20
+0.0922127616591436
+30
+-1.0511651486801586e-15
+11
+0.31842290936903583
+21
+0.3184229093690527
+31
+-3.290439660368124e-15
+12
+0.38998682518331773
+22
+0.22515899850001475
+32
+7.206242211372932e-17
+13
+0.38998682518331773
+23
+0.22515899850001475
+33
+7.206242211372932e-17
+70
+13
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813714
+20
+0.0922127616591436
+30
+-1.0511651486801586e-15
+11
+0.38998682518331773
+21
+0.22515899850001475
+31
+7.206242211372932e-17
+12
+0.3562827519999918
+22
+4.3298697960381105e-15
+32
+-1.0504778341596352e-15
+13
+0.3562827519999918
+23
+4.3298697960381105e-15
+33
+-1.0504778341596352e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3562827519999918
+20
+4.3298697960381105e-15
+30
+-1.0504778341596352e-15
+11
+0.38998682518331773
+21
+0.22515899850001475
+31
+7.206242211372932e-17
+12
+0.450317996999995
+22
+1.1046719095020308e-14
+32
+-3.2806012647849043e-15
+13
+0.450317996999995
+23
+1.1046719095020308e-14
+33
+-3.2806012647849043e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.450317996999995
+20
+1.1046719095020308e-14
+30
+-3.2806012647849043e-15
+11
+0.38998682518331773
+21
+0.22515899850001475
+31
+7.206242211372932e-17
+12
+0.434973783345053
+22
+0.11655087397603137
+32
+-4.400432685469344e-15
+13
+0.434973783345053
+23
+0.11655087397603137
+33
+-4.400432685469344e-15
+70
+1
+ 0
+LINE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+1.3322676295501878e-14
+30
+-1.0800381050538982e-15
+11
+-0.03937000000001045
+21
+1.1046719095020308e-14
+31
+-2.2022672779789954e-15
+ 0
+LINE
+ 8
+thumb metacarpal
+10
+-1.0436096431476471e-14
+20
+8.826273045769994e-15
+30
+-0.039400000000002454
+11
+-7.049916206369744e-15
+21
+1.3322676295501878e-14
+31
+-1.0800381050538982e-15
+ 0
+LINE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+1.3322676295501878e-14
+30
+-1.0800381050538982e-15
+11
+-7.049916206369744e-15
+21
+1.3322676295501878e-14
+31
+0.03939999999999806
+ 0
+LINE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+1.3322676295501878e-14
+30
+-1.0800381050538982e-15
+11
+-1.0436096431476471e-14
+21
+0.03936999999999541
+31
+-2.198864213202406e-15
+ 0
+LINE
+ 8
+thumb metacarpal
+10
+0.03936999999998847
+20
+2.1094237467877974e-15
+30
+4.21910678711987e-17
+11
+-7.049916206369744e-15
+21
+1.3322676295501878e-14
+31
+-1.0800381050538982e-15
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.35328475047387764
+20
+0.09466236358770014
+30
+0.3532847504738821
+11
+-0.3554382812124002
+21
+0.07106866747815194
+31
+0.3554382812124069
+12
+-0.3358093605615792
+22
+0.08997984697328248
+32
+0.4416633977968423
+13
+-0.3358093605615792
+23
+0.08997984697328248
+33
+0.4416633977968423
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.17382771607408792
+20
+0.3010784360039525
+30
+0.44166339779684116
+11
+0.3097606107421021
+21
+0.309760610742088
+31
+-1.1769864756914841e-14
+12
+0.2190338284002274
+22
+0.37937771936549897
+32
+-1.1771797019837378e-14
+13
+0.2190338284002274
+23
+0.37937771936549897
+33
+-1.1771797019837378e-14
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607406877
+20
+0.3010784360039503
+30
+0.4416633977968423
+11
+-0.13135838013328194
+21
+0.3868373733924963
+31
+0.13135838013328868
+12
+-0.1986964122260401
+22
+0.3441522812571604
+32
+0.19869641222604567
+13
+-0.1986964122260401
+23
+0.3441522812571604
+33
+0.19869641222604567
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3793777193655142
+20
+0.21903382840021673
+30
+-1.3445790633259696e-14
+11
+0.3010784360039633
+21
+0.17382771607407282
+31
+0.44166339779684116
+12
+0.4231408633654961
+22
+0.11338025262338508
+32
+-1.1764414107035652e-14
+13
+0.4231408633654961
+23
+0.11338025262338508
+33
+-1.1764414107035652e-14
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.08997984697327954
+20
+0.3358093605615809
+30
+0.44166339779684116
+11
+1.071365218763276e-14
+21
+0.4380676568004345
+31
+-1.2892388693108735e-14
+12
+-0.1076753495876358
+22
+0.40184987538383093
+32
+0.10767534958764315
+13
+-0.1076753495876358
+23
+0.40184987538383093
+33
+0.10767534958764315
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.335809360561582
+30
+0.4416633977968423
+11
+0.2190338284002274
+21
+0.37937771936549897
+31
+-1.1771797019837378e-14
+12
+0.11338025262340018
+22
+0.42314086336547535
+32
+-1.1213530340952345e-14
+13
+0.11338025262340018
+23
+0.42314086336547535
+33
+-1.1213530340952345e-14
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.27059219435790804
+20
+0.2705921943579131
+30
+0.2705921943579153
+11
+-0.2912967185332681
+21
+0.23670677844559634
+31
+0.29129671853327366
+12
+-0.24582951358828664
+22
+0.24582951358829058
+32
+0.44166339779684116
+13
+-0.24582951358828664
+23
+0.24582951358829058
+33
+0.44166339779684116
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828664
+20
+0.24582951358829058
+30
+0.44166339779684116
+11
+-0.2331808958459863
+21
+0.30886952145483487
+31
+0.2331808958459941
+12
+-0.27059219435790804
+22
+0.2705921943579131
+32
+0.2705921943579153
+13
+-0.27059219435790804
+23
+0.2705921943579131
+33
+0.2705921943579153
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3222486125544444
+20
+0.18605032320429132
+30
+0.3222486125544489
+11
+-0.331519017082783
+21
+0.15875300428965727
+31
+0.33151901708278747
+12
+-0.30107843600394635
+22
+0.17382771607406827
+32
+0.44166339779684116
+13
+-0.30107843600394635
+23
+0.17382771607406827
+33
+0.44166339779684116
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.4231408633654961
+20
+0.11338025262338508
+30
+-1.1764414107035652e-14
+11
+0.3358093605615961
+21
+0.08997984697328582
+31
+0.44166339779684116
+12
+0.43806765680045084
+22
+-2.220446049250313e-15
+32
+-5.71640170110588e-16
+13
+0.43806765680045084
+23
+-2.220446049250313e-15
+33
+-5.71640170110588e-16
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3097606107421021
+20
+0.309760610742088
+30
+-1.1769864756914841e-14
+11
+0.24582951358830357
+21
+0.2458295135882939
+31
+0.44166339779684116
+12
+0.3793777193655142
+22
+0.21903382840021673
+32
+-1.3445790633259696e-14
+13
+0.3793777193655142
+23
+0.21903382840021673
+33
+-1.3445790633259696e-14
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+8.493206138382448e-15
+20
+0.3476554321481467
+30
+0.44166339779684116
+11
+0.11338025262340018
+21
+0.42314086336547535
+31
+-1.1213530340952345e-14
+12
+1.071365218763276e-14
+22
+0.4380676568004345
+32
+-1.2892388693108735e-14
+13
+1.071365218763276e-14
+23
+0.4380676568004345
+33
+-1.2892388693108735e-14
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607406877
+20
+0.3010784360039503
+30
+0.4416633977968423
+11
+-0.0899798469732796
+21
+0.3358093605615798
+31
+0.768373308495885
+12
+-0.08997984697327954
+22
+0.3358093605615809
+32
+0.44166339779684116
+13
+-0.08997984697327954
+23
+0.3358093605615809
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.0899798469732796
+20
+0.3358093605615798
+30
+0.768373308495885
+11
+-0.17382771607406877
+21
+0.3010784360039503
+31
+0.4416633977968423
+12
+-0.17382771607407105
+22
+0.3010784360039514
+32
+0.7683733084958873
+13
+-0.17382771607407105
+23
+0.3010784360039514
+33
+0.7683733084958873
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.335809360561582
+30
+0.4416633977968423
+11
+0.1738277160740857
+21
+0.3010784360039536
+31
+0.7683733084958873
+12
+0.17382771607408792
+22
+0.3010784360039525
+32
+0.44166339779684116
+13
+0.17382771607408792
+23
+0.3010784360039525
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.1738277160740857
+20
+0.3010784360039536
+30
+0.7683733084958873
+11
+0.08997984697329425
+21
+0.335809360561582
+31
+0.4416633977968423
+12
+0.08997984697329425
+22
+0.3358093605615809
+32
+0.7683733084958861
+13
+0.08997984697329425
+23
+0.3358093605615809
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.11108623083123143
+20
+0.4145794574834358
+30
+1.2100367062927357
+11
+0.1738277160740857
+21
+0.3010784360039536
+31
+0.7683733084958873
+12
+0.08997984697329425
+22
+0.3358093605615809
+32
+0.7683733084958861
+13
+0.08997984697329425
+23
+0.3358093605615809
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.1738277160740857
+20
+0.3010784360039536
+30
+0.7683733084958873
+11
+0.11108623083123143
+21
+0.4145794574834358
+31
+1.2100367062927357
+12
+0.21460211860998019
+22
+0.3717017728443855
+32
+1.210036706292738
+13
+0.21460211860998019
+23
+0.3717017728443855
+33
+1.210036706292738
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30107843600394635
+20
+0.17382771607406938
+30
+0.7683733084958861
+11
+-0.24582951358828664
+21
+0.24582951358829058
+31
+0.44166339779684116
+12
+-0.30107843600394635
+22
+0.17382771607406827
+32
+0.44166339779684116
+13
+-0.30107843600394635
+23
+0.17382771607406827
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828664
+20
+0.24582951358829058
+30
+0.44166339779684116
+11
+-0.30107843600394635
+21
+0.17382771607406938
+31
+0.7683733084958861
+12
+-0.24582951358828667
+22
+0.24582951358829058
+32
+0.7683733084958861
+13
+-0.24582951358828667
+23
+0.24582951358829058
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.0899798469732796
+20
+0.3358093605615798
+30
+0.768373308495885
+11
+8.493206138382448e-15
+21
+0.3476554321481467
+31
+0.44166339779684116
+12
+-0.08997984697327954
+22
+0.3358093605615809
+32
+0.44166339779684116
+13
+-0.08997984697327954
+23
+0.3358093605615809
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+8.493206138382448e-15
+20
+0.3476554321481467
+30
+0.44166339779684116
+11
+-0.0899798469732796
+21
+0.3358093605615798
+31
+0.768373308495885
+12
+8.43769498715119e-15
+22
+0.3476554321481467
+32
+0.7683733084958861
+13
+8.43769498715119e-15
+23
+0.3476554321481467
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.24582951358830357
+20
+0.2458295135882939
+30
+0.44166339779684116
+11
+0.3010784360039655
+21
+0.17382771607407282
+31
+0.7683733084958861
+12
+0.3010784360039633
+22
+0.17382771607407282
+32
+0.44166339779684116
+13
+0.3010784360039633
+23
+0.17382771607407282
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3010784360039655
+20
+0.17382771607407282
+30
+0.7683733084958861
+11
+0.24582951358830357
+21
+0.2458295135882939
+31
+0.44166339779684116
+12
+0.2458295135883058
+22
+0.2458295135882928
+32
+0.7683733084958873
+13
+0.2458295135883058
+23
+0.2458295135882928
+33
+0.7683733084958873
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.2458295135883058
+20
+0.2458295135882928
+30
+0.7683733084958873
+11
+0.3717017728444028
+21
+0.2146021186099673
+31
+1.2100367062927369
+12
+0.3010784360039655
+22
+0.17382771607407282
+32
+0.7683733084958861
+13
+0.3010784360039655
+23
+0.17382771607407282
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3717017728444028
+20
+0.2146021186099673
+30
+1.2100367062927369
+11
+0.2458295135883058
+21
+0.2458295135882928
+31
+0.7683733084958873
+12
+0.30349322665223116
+22
+0.30349322665221606
+32
+1.2100367062927357
+13
+0.30349322665223116
+23
+0.30349322665221606
+33
+1.2100367062927357
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828667
+20
+0.24582951358829058
+30
+0.7683733084958861
+11
+-0.17382771607406877
+21
+0.3010784360039503
+31
+0.4416633977968423
+12
+-0.24582951358828664
+22
+0.24582951358829058
+32
+0.44166339779684116
+13
+-0.24582951358828664
+23
+0.24582951358829058
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607406877
+20
+0.3010784360039503
+30
+0.4416633977968423
+11
+-0.24582951358828667
+21
+0.24582951358829058
+31
+0.7683733084958861
+12
+-0.17382771607407105
+22
+0.3010784360039514
+32
+0.7683733084958873
+13
+-0.17382771607407105
+23
+0.3010784360039514
+33
+0.7683733084958873
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+8.43769498715119e-15
+20
+0.3476554321481467
+30
+0.7683733084958861
+11
+0.08997984697329425
+21
+0.335809360561582
+31
+0.4416633977968423
+12
+8.493206138382448e-15
+22
+0.3476554321481467
+32
+0.44166339779684116
+13
+8.493206138382448e-15
+23
+0.3476554321481467
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.335809360561582
+30
+0.4416633977968423
+11
+8.43769498715119e-15
+21
+0.3476554321481467
+31
+0.7683733084958861
+12
+0.08997984697329425
+22
+0.3358093605615809
+32
+0.7683733084958861
+13
+0.08997984697329425
+23
+0.3358093605615809
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.0658141036401503e-14
+20
+0.4292042372199358
+30
+1.2100367062927369
+11
+0.08997984697329425
+21
+0.3358093605615809
+31
+0.7683733084958861
+12
+8.43769498715119e-15
+22
+0.3476554321481467
+32
+0.7683733084958861
+13
+8.43769498715119e-15
+23
+0.3476554321481467
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.3358093605615809
+30
+0.7683733084958861
+11
+1.0658141036401503e-14
+21
+0.4292042372199358
+31
+1.2100367062927369
+12
+0.11108623083123143
+22
+0.4145794574834358
+32
+1.2100367062927357
+13
+0.11108623083123143
+23
+0.4145794574834358
+33
+1.2100367062927357
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30107843600394635
+20
+0.17382771607406938
+30
+0.7683733084958861
+11
+-0.3358093605615792
+21
+0.08997984697328248
+31
+0.4416633977968423
+12
+-0.3358093605615814
+22
+0.08997984697328248
+32
+0.7683733084958861
+13
+-0.3358093605615814
+23
+0.08997984697328248
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3358093605615792
+20
+0.08997984697328248
+30
+0.4416633977968423
+11
+-0.30107843600394635
+21
+0.17382771607406938
+31
+0.7683733084958861
+12
+-0.30107843600394635
+22
+0.17382771607406827
+32
+0.44166339779684116
+13
+-0.30107843600394635
+23
+0.17382771607406827
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.1738277160740857
+20
+0.3010784360039536
+30
+0.7683733084958873
+11
+0.24582951358830357
+21
+0.2458295135882939
+31
+0.44166339779684116
+12
+0.17382771607408792
+22
+0.3010784360039525
+32
+0.44166339779684116
+13
+0.17382771607408792
+23
+0.3010784360039525
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.24582951358830357
+20
+0.2458295135882939
+30
+0.44166339779684116
+11
+0.1738277160740857
+21
+0.3010784360039536
+31
+0.7683733084958873
+12
+0.2458295135883058
+22
+0.2458295135882928
+32
+0.7683733084958873
+13
+0.2458295135883058
+23
+0.2458295135882928
+33
+0.7683733084958873
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.21460211860998019
+20
+0.3717017728443855
+30
+1.210036706292738
+11
+0.2458295135883058
+21
+0.2458295135882928
+31
+0.7683733084958873
+12
+0.1738277160740857
+22
+0.3010784360039536
+32
+0.7683733084958873
+13
+0.1738277160740857
+23
+0.3010784360039536
+33
+0.7683733084958873
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.2458295135883058
+20
+0.2458295135882928
+30
+0.7683733084958873
+11
+0.21460211860998019
+21
+0.3717017728443855
+31
+1.210036706292738
+12
+0.30349322665223116
+22
+0.30349322665221606
+32
+1.2100367062927357
+13
+0.30349322665223116
+23
+0.30349322665221606
+33
+1.2100367062927357
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3358093605615814
+20
+0.08997984697328248
+30
+0.7683733084958861
+11
+-0.3476554321481416
+21
+-5.6066262743570405e-15
+31
+0.4670991950407831
+12
+-0.3476554321481416
+22
+-7.827072323607354e-15
+32
+0.7683733084958861
+13
+-0.3476554321481416
+23
+-7.827072323607354e-15
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3476554321481416
+20
+-5.6066262743570405e-15
+30
+0.4670991950407831
+11
+-0.3358093605615814
+21
+0.08997984697328248
+31
+0.7683733084958861
+12
+-0.3476554321481416
+22
+-5.6066262743570405e-15
+32
+0.4416633977968423
+13
+-0.3476554321481416
+23
+-5.6066262743570405e-15
+33
+0.4416633977968423
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3476554321481416
+20
+-5.6066262743570405e-15
+30
+0.4416633977968423
+11
+-0.3358093605615814
+21
+0.08997984697328248
+31
+0.7683733084958861
+12
+-0.3358093605615792
+22
+0.08997984697328248
+32
+0.4416633977968423
+13
+-0.3358093605615792
+23
+0.08997984697328248
+33
+0.4416633977968423
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3010784360039633
+20
+0.17382771607407282
+30
+0.44166339779684116
+11
+0.3358093605615983
+21
+0.08997984697328582
+31
+0.7683733084958873
+12
+0.3358093605615961
+22
+0.08997984697328582
+32
+0.44166339779684116
+13
+0.3358093605615961
+23
+0.08997984697328582
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3358093605615983
+20
+0.08997984697328582
+30
+0.7683733084958873
+11
+0.3010784360039633
+21
+0.17382771607407282
+31
+0.44166339779684116
+12
+0.3010784360039655
+22
+0.17382771607407282
+32
+0.7683733084958861
+13
+0.3010784360039655
+23
+0.17382771607407282
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3010784360039655
+20
+0.17382771607407282
+30
+0.7683733084958861
+11
+0.41457945748344976
+21
+0.11108623083121855
+31
+1.2100367062927369
+12
+0.3358093605615983
+22
+0.08997984697328582
+32
+0.7683733084958873
+13
+0.3358093605615983
+23
+0.08997984697328582
+33
+0.7683733084958873
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.41457945748344976
+20
+0.11108623083121855
+30
+1.2100367062927369
+11
+0.3010784360039655
+21
+0.17382771607407282
+31
+0.7683733084958861
+12
+0.3717017728444028
+22
+0.2146021186099673
+32
+1.2100367062927369
+13
+0.3717017728444028
+23
+0.2146021186099673
+33
+1.2100367062927369
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.34765543214816524
+20
+-2.220446049250313e-15
+30
+0.4416633977968546
+11
+0.3358093605615983
+21
+0.08997984697328582
+31
+0.7683733084958873
+12
+0.34765543214816524
+22
+-3.3306690738754696e-15
+32
+0.7683733084958906
+13
+0.34765543214816524
+23
+-3.3306690738754696e-15
+33
+0.7683733084958906
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3358093605615983
+20
+0.08997984697328582
+30
+0.7683733084958873
+11
+0.34765543214816524
+21
+-2.220446049250313e-15
+31
+0.4416633977968546
+12
+0.3358093605615961
+22
+0.08997984697328582
+32
+0.44166339779684116
+13
+0.3358093605615961
+23
+0.08997984697328582
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3358093605615983
+20
+0.08997984697328582
+30
+0.7683733084958873
+11
+0.429204237219952
+21
+-1.1102230246251565e-15
+31
+1.210036706292738
+12
+0.34765543214816524
+22
+-3.3306690738754696e-15
+32
+0.7683733084958906
+13
+0.34765543214816524
+23
+-3.3306690738754696e-15
+33
+0.7683733084958906
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.429204237219952
+20
+-1.1102230246251565e-15
+30
+1.210036706292738
+11
+0.3358093605615983
+21
+0.08997984697328582
+31
+0.7683733084958873
+12
+0.41457945748344976
+22
+0.11108623083121855
+32
+1.2100367062927369
+13
+0.41457945748344976
+23
+0.11108623083121855
+33
+1.2100367062927369
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3010784360039633
+20
+0.17382771607407282
+30
+0.44166339779684116
+11
+0.3358093605615961
+21
+0.08997984697328582
+31
+0.44166339779684116
+12
+0.4231408633654961
+22
+0.11338025262338508
+32
+-1.1764414107035652e-14
+13
+0.4231408633654961
+23
+0.11338025262338508
+33
+-1.1764414107035652e-14
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.335809360561582
+30
+0.4416633977968423
+11
+0.11338025262340018
+21
+0.42314086336547535
+31
+-1.1213530340952345e-14
+12
+8.493206138382448e-15
+22
+0.3476554321481467
+32
+0.44166339779684116
+13
+8.493206138382448e-15
+23
+0.3476554321481467
+33
+0.44166339779684116
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3358093605615792
+20
+0.08997984697328248
+30
+0.4416633977968423
+11
+-0.3632432353943587
+21
+-4.496403249731884e-15
+31
+0.3632432353943699
+12
+-0.3476554321481416
+22
+-5.6066262743570405e-15
+32
+0.4416633977968423
+13
+-0.3476554321481416
+23
+-5.6066262743570405e-15
+33
+0.4416633977968423
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3632432353943587
+20
+-4.496403249731884e-15
+30
+0.3632432353943699
+11
+-0.3358093605615792
+21
+0.08997984697328248
+31
+0.4416633977968423
+12
+-0.3554382812124002
+22
+0.07106866747815194
+32
+0.3554382812124069
+13
+-0.3554382812124002
+23
+0.07106866747815194
+33
+0.3554382812124069
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828664
+20
+0.24582951358829058
+30
+0.44166339779684116
+11
+-0.3222486125544444
+21
+0.18605032320429132
+31
+0.3222486125544489
+12
+-0.30107843600394635
+22
+0.17382771607406827
+32
+0.44166339779684116
+13
+-0.30107843600394635
+23
+0.17382771607406827
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3222486125544444
+20
+0.18605032320429132
+30
+0.3222486125544489
+11
+-0.24582951358828664
+21
+0.24582951358829058
+31
+0.44166339779684116
+12
+-0.2959784921776627
+22
+0.2290444991387141
+32
+0.2959784921776672
+13
+-0.2959784921776627
+23
+0.2290444991387141
+33
+0.2959784921776672
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2959784921776627
+20
+0.2290444991387141
+30
+0.2959784921776672
+11
+-0.24582951358828664
+21
+0.24582951358829058
+31
+0.44166339779684116
+12
+-0.2912967185332681
+22
+0.23670677844559634
+32
+0.29129671853327366
+13
+-0.2912967185332681
+23
+0.23670677844559634
+33
+0.29129671853327366
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2331808958459863
+20
+0.30886952145483487
+30
+0.2331808958459941
+11
+-0.17382771607406877
+21
+0.3010784360039503
+31
+0.4416633977968423
+12
+-0.1986964122260401
+22
+0.3441522812571604
+32
+0.19869641222604567
+13
+-0.1986964122260401
+23
+0.3441522812571604
+33
+0.19869641222604567
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607406877
+20
+0.3010784360039503
+30
+0.4416633977968423
+11
+-0.2331808958459863
+21
+0.30886952145483487
+31
+0.2331808958459941
+12
+-0.24582951358828664
+22
+0.24582951358829058
+32
+0.44166339779684116
+13
+-0.24582951358828664
+23
+0.24582951358829058
+33
+0.44166339779684116
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30107843600394635
+20
+0.17382771607406827
+30
+0.44166339779684116
+11
+-0.35328475047387764
+21
+0.09466236358770014
+31
+0.3532847504738821
+12
+-0.3358093605615792
+22
+0.08997984697328248
+32
+0.4416633977968423
+13
+-0.3358093605615792
+23
+0.08997984697328248
+33
+0.4416633977968423
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.35328475047387764
+20
+0.09466236358770014
+30
+0.3532847504738821
+11
+-0.30107843600394635
+21
+0.17382771607406827
+31
+0.44166339779684116
+12
+-0.331519017082783
+22
+0.15875300428965727
+32
+0.33151901708278747
+13
+-0.331519017082783
+23
+0.15875300428965727
+33
+0.33151901708278747
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+8.493206138382448e-15
+20
+0.3476554321481467
+30
+0.44166339779684116
+11
+1.071365218763276e-14
+21
+0.4380676568004345
+31
+-1.2892388693108735e-14
+12
+-0.08997984697327954
+22
+0.3358093605615809
+32
+0.44166339779684116
+13
+-0.08997984697327954
+23
+0.3358093605615809
+33
+0.44166339779684116
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.335809360561582
+30
+0.4416633977968423
+11
+0.17382771607408792
+21
+0.3010784360039525
+31
+0.44166339779684116
+12
+0.2190338284002274
+22
+0.37937771936549897
+32
+-1.1771797019837378e-14
+13
+0.2190338284002274
+23
+0.37937771936549897
+33
+-1.1771797019837378e-14
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.24582951358830357
+20
+0.2458295135882939
+30
+0.44166339779684116
+11
+0.3010784360039633
+21
+0.17382771607407282
+31
+0.44166339779684116
+12
+0.3793777193655142
+22
+0.21903382840021673
+32
+-1.3445790633259696e-14
+13
+0.3793777193655142
+23
+0.21903382840021673
+33
+-1.3445790633259696e-14
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.24582951358830357
+20
+0.2458295135882939
+30
+0.44166339779684116
+11
+0.3097606107421021
+21
+0.309760610742088
+31
+-1.1769864756914841e-14
+12
+0.17382771607408792
+22
+0.3010784360039525
+32
+0.44166339779684116
+13
+0.17382771607408792
+23
+0.3010784360039525
+33
+0.44166339779684116
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.13135838013328194
+20
+0.3868373733924963
+30
+0.13135838013328868
+11
+-0.08997984697327954
+21
+0.3358093605615809
+31
+0.44166339779684116
+12
+-0.1076753495876358
+22
+0.40184987538383093
+32
+0.10767534958764315
+13
+-0.1076753495876358
+23
+0.40184987538383093
+33
+0.10767534958764315
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.08997984697327954
+20
+0.3358093605615809
+30
+0.44166339779684116
+11
+-0.13135838013328194
+21
+0.3868373733924963
+31
+0.13135838013328868
+12
+-0.17382771607406877
+22
+0.3010784360039503
+32
+0.4416633977968423
+13
+-0.17382771607406877
+23
+0.3010784360039503
+33
+0.4416633977968423
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3358093605615961
+20
+0.08997984697328582
+30
+0.44166339779684116
+11
+0.34765543214816524
+21
+-2.220446049250313e-15
+31
+0.4416633977968546
+12
+0.43806765680045084
+22
+-2.220446049250313e-15
+32
+-5.71640170110588e-16
+13
+0.43806765680045084
+23
+-2.220446049250313e-15
+33
+-5.71640170110588e-16
+70
+0
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+0.3562827520000152
+21
+0.21460211860996398
+31
+9.493067727034111e-15
+12
+1.7763568394002505e-15
+22
+0.21460211860996398
+32
+-1.1370779255784436e-15
+13
+1.7763568394002505e-15
+23
+0.21460211860996398
+33
+-1.1370779255784436e-15
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+0.21460211860996398
+30
+9.493067727034111e-15
+11
+1.071365218763276e-14
+21
+0.4380676568004345
+31
+-1.2892388693108735e-14
+12
+0.11338025262340018
+22
+0.42314086336547535
+32
+-1.1213530340952345e-14
+13
+0.11338025262340018
+23
+0.42314086336547535
+33
+-1.1213530340952345e-14
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+0.21460211860996398
+30
+9.493067727034111e-15
+11
+0.11338025262340018
+21
+0.42314086336547535
+31
+-1.1213530340952345e-14
+12
+0.2190338284002274
+22
+0.37937771936549897
+32
+-1.1771797019837378e-14
+13
+0.2190338284002274
+23
+0.37937771936549897
+33
+-1.1771797019837378e-14
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+0.21460211860996398
+30
+9.493067727034111e-15
+11
+0.2190338284002274
+21
+0.37937771936549897
+31
+-1.1771797019837378e-14
+12
+0.3097606107421021
+22
+0.309760610742088
+32
+-1.1769864756914841e-14
+13
+0.3097606107421021
+23
+0.309760610742088
+33
+-1.1769864756914841e-14
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+0.21460211860996398
+30
+9.493067727034111e-15
+11
+0.3097606107421021
+21
+0.309760610742088
+31
+-1.1769864756914841e-14
+12
+0.3793777193655142
+22
+0.21903382840021673
+32
+-1.3445790633259696e-14
+13
+0.3793777193655142
+23
+0.21903382840021673
+33
+-1.3445790633259696e-14
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+0.21460211860996398
+30
+9.493067727034111e-15
+11
+0.3793777193655142
+21
+0.21903382840021673
+31
+-1.3445790633259696e-14
+12
+0.3562827520000152
+22
+-4.496403249731884e-15
+32
+1.0058505482501966e-14
+13
+0.3562827520000152
+23
+-4.496403249731884e-15
+33
+1.0058505482501966e-14
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+-4.496403249731884e-15
+30
+1.0058505482501966e-14
+11
+0.3793777193655142
+21
+0.21903382840021673
+31
+-1.3445790633259696e-14
+12
+0.43806765680045084
+22
+-2.220446049250313e-15
+32
+-5.71640170110588e-16
+13
+0.43806765680045084
+23
+-2.220446049250313e-15
+33
+-5.71640170110588e-16
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.43806765680045084
+20
+-2.220446049250313e-15
+30
+-5.71640170110588e-16
+11
+0.3793777193655142
+21
+0.21903382840021673
+31
+-1.3445790633259696e-14
+12
+0.4231408633654961
+22
+0.11338025262338508
+32
+-1.1764414107035652e-14
+13
+0.4231408633654961
+23
+0.11338025262338508
+33
+-1.1764414107035652e-14
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3554382812124002
+20
+0.07106866747815194
+30
+0.3554382812124069
+11
+-0.2519299499589987
+21
+-3.3306690738754696e-15
+31
+0.25192994995900597
+12
+-0.3632432353943587
+22
+-4.496403249731884e-15
+32
+0.3632432353943699
+13
+-0.3632432353943587
+23
+-4.496403249731884e-15
+33
+0.3632432353943699
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2519299499589987
+20
+-3.3306690738754696e-15
+30
+0.25192994995900597
+11
+-0.3554382812124002
+21
+0.07106866747815194
+31
+0.3554382812124069
+12
+-0.25192994995899876
+22
+0.21460211860996398
+32
+0.2519299499590065
+13
+-0.25192994995899876
+23
+0.21460211860996398
+33
+0.2519299499590065
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899876
+20
+0.21460211860996398
+30
+0.2519299499590065
+11
+-0.3554382812124002
+21
+0.07106866747815194
+31
+0.3554382812124069
+12
+-0.35328475047387764
+22
+0.09466236358770014
+32
+0.3532847504738821
+13
+-0.35328475047387764
+23
+0.09466236358770014
+33
+0.3532847504738821
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899876
+20
+0.21460211860996398
+30
+0.2519299499590065
+11
+-0.35328475047387764
+21
+0.09466236358770014
+31
+0.3532847504738821
+12
+-0.331519017082783
+22
+0.15875300428965727
+32
+0.33151901708278747
+13
+-0.331519017082783
+23
+0.15875300428965727
+33
+0.33151901708278747
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899876
+20
+0.21460211860996398
+30
+0.2519299499590065
+11
+-0.331519017082783
+21
+0.15875300428965727
+31
+0.33151901708278747
+12
+-0.3222486125544444
+22
+0.18605032320429132
+32
+0.3222486125544489
+13
+-0.3222486125544444
+23
+0.18605032320429132
+33
+0.3222486125544489
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899876
+20
+0.21460211860996398
+30
+0.2519299499590065
+11
+-0.3222486125544444
+21
+0.18605032320429132
+31
+0.3222486125544489
+12
+-0.2959784921776627
+22
+0.2290444991387141
+32
+0.2959784921776672
+13
+-0.2959784921776627
+23
+0.2290444991387141
+33
+0.2959784921776672
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899876
+20
+0.21460211860996398
+30
+0.2519299499590065
+11
+-0.2959784921776627
+21
+0.2290444991387141
+31
+0.2959784921776672
+12
+1.7763568394002505e-15
+22
+0.21460211860996398
+32
+-1.1370779255784436e-15
+13
+1.7763568394002505e-15
+23
+0.21460211860996398
+33
+-1.1370779255784436e-15
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.7763568394002505e-15
+20
+0.21460211860996398
+30
+-1.1370779255784436e-15
+11
+-0.2959784921776627
+21
+0.2290444991387141
+31
+0.2959784921776672
+12
+1.071365218763276e-14
+22
+0.4380676568004345
+32
+-1.2892388693108735e-14
+13
+1.071365218763276e-14
+23
+0.4380676568004345
+33
+-1.2892388693108735e-14
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.2959784921776627
+21
+0.2290444991387141
+31
+0.2959784921776672
+12
+-0.2912967185332681
+22
+0.23670677844559634
+32
+0.29129671853327366
+13
+-0.2912967185332681
+23
+0.23670677844559634
+33
+0.29129671853327366
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.2912967185332681
+21
+0.23670677844559634
+31
+0.29129671853327366
+12
+-0.27059219435790804
+22
+0.2705921943579131
+32
+0.2705921943579153
+13
+-0.27059219435790804
+23
+0.2705921943579131
+33
+0.2705921943579153
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.27059219435790804
+21
+0.2705921943579131
+31
+0.2705921943579153
+12
+-0.2331808958459863
+22
+0.30886952145483487
+32
+0.2331808958459941
+13
+-0.2331808958459863
+23
+0.30886952145483487
+33
+0.2331808958459941
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.2331808958459863
+21
+0.30886952145483487
+31
+0.2331808958459941
+12
+-0.1986964122260401
+22
+0.3441522812571604
+32
+0.19869641222604567
+13
+-0.1986964122260401
+23
+0.3441522812571604
+33
+0.19869641222604567
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.1986964122260401
+21
+0.3441522812571604
+31
+0.19869641222604567
+12
+-0.13135838013328194
+22
+0.3868373733924963
+32
+0.13135838013328868
+13
+-0.13135838013328194
+23
+0.3868373733924963
+33
+0.13135838013328868
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.13135838013328194
+21
+0.3868373733924963
+31
+0.13135838013328868
+12
+-0.1076753495876358
+22
+0.40184987538383093
+32
+0.10767534958764315
+13
+-0.1076753495876358
+23
+0.40184987538383093
+33
+0.10767534958764315
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30854991416221755
+20
+0.2146021186099651
+30
+1.031895330292737
+11
+1.5154544286133387e-14
+21
+0.2146021186099651
+31
+1.210036706292738
+12
+-0.25192994995899204
+22
+0.2146021186099651
+32
+0.9581067563337309
+13
+-0.25192994995899204
+23
+0.2146021186099651
+33
+0.9581067563337309
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.5154544286133387e-14
+20
+0.2146021186099651
+30
+1.210036706292738
+11
+-0.30854991416221755
+21
+0.2146021186099651
+31
+1.031895330292737
+12
+-0.3441427116181268
+22
+0.21460211860996398
+32
+1.1178239446335976
+13
+-0.3441427116181268
+23
+0.21460211860996398
+33
+1.1178239446335976
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.5154544286133387e-14
+20
+0.2146021186099651
+30
+1.210036706292738
+11
+-0.3441427116181268
+21
+0.21460211860996398
+31
+1.1178239446335976
+12
+-0.3562827519999848
+22
+0.2146021186099651
+32
+1.210036706292738
+13
+-0.3562827519999848
+23
+0.2146021186099651
+33
+1.210036706292738
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.5154544286133387e-14
+20
+0.2146021186099651
+30
+1.210036706292738
+11
+-0.3562827519999848
+21
+0.2146021186099651
+31
+1.210036706292738
+12
+-0.34414271161812904
+22
+0.21460211860996398
+32
+1.3022494679518728
+13
+-0.34414271161812904
+23
+0.21460211860996398
+33
+1.3022494679518728
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.5154544286133387e-14
+20
+0.2146021186099651
+30
+1.210036706292738
+11
+0.34414271161815474
+21
+0.2146021186099651
+31
+1.3022494679518728
+12
+0.35628275200001275
+22
+0.21460211860996398
+32
+1.2100367062927357
+13
+0.35628275200001275
+23
+0.21460211860996398
+33
+1.2100367062927357
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.34414271161815474
+20
+0.2146021186099651
+30
+1.3022494679518728
+11
+1.5154544286133387e-14
+21
+0.2146021186099651
+31
+1.210036706292738
+12
+-0.34414271161812904
+22
+0.21460211860996398
+32
+1.3022494679518728
+13
+-0.34414271161812904
+23
+0.21460211860996398
+33
+1.3022494679518728
+70
+15
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.34414271161815474
+20
+0.2146021186099651
+30
+1.3022494679518728
+11
+-0.34414271161812904
+21
+0.21460211860996398
+31
+1.3022494679518728
+12
+-0.31759179099011564
+22
+0.2146021186099651
+32
+1.3663490606255126
+13
+-0.31759179099011564
+23
+0.2146021186099651
+33
+1.3663490606255126
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.34414271161815474
+20
+0.2146021186099651
+30
+1.3022494679518728
+11
+-0.31759179099011564
+21
+0.2146021186099651
+31
+1.3663490606255126
+12
+0.3085499141622455
+22
+0.2146021186099651
+32
+1.3881780822927345
+13
+0.3085499141622455
+23
+0.2146021186099651
+33
+1.3881780822927345
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3085499141622455
+20
+0.2146021186099651
+30
+1.3881780822927345
+11
+-0.31759179099011564
+21
+0.2146021186099651
+31
+1.3663490606255126
+12
+-0.30854991416221755
+22
+0.21460211860996398
+32
+1.3881780822927345
+13
+-0.30854991416221755
+23
+0.21460211860996398
+33
+1.3881780822927345
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3085499141622455
+20
+0.2146021186099651
+30
+1.3881780822927345
+11
+-0.30854991416221755
+21
+0.21460211860996398
+31
+1.3881780822927345
+12
+-0.2519299499589899
+22
+0.21460211860996398
+32
+1.4619666562517406
+13
+-0.2519299499589899
+23
+0.21460211860996398
+33
+1.4619666562517406
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3085499141622455
+20
+0.2146021186099651
+30
+1.3881780822927345
+11
+-0.2519299499589899
+21
+0.21460211860996398
+31
+1.4619666562517406
+12
+0.2519299499590178
+22
+0.2146021186099651
+32
+1.4619666562517417
+13
+0.2519299499590178
+23
+0.2146021186099651
+33
+1.4619666562517417
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.2519299499590178
+20
+0.2146021186099651
+30
+1.4619666562517417
+11
+-0.2519299499589899
+21
+0.21460211860996398
+31
+1.4619666562517406
+12
+-0.17814137599998603
+22
+0.2146021186099651
+32
+1.5185866204549672
+13
+-0.17814137599998603
+23
+0.2146021186099651
+33
+1.5185866204549672
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.2519299499590178
+20
+0.2146021186099651
+30
+1.4619666562517417
+11
+-0.17814137599998603
+21
+0.2146021186099651
+31
+1.5185866204549672
+12
+0.17814137600001173
+22
+0.21460211860996287
+32
+1.5185866204549672
+13
+0.17814137600001173
+23
+0.21460211860996287
+33
+1.5185866204549672
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.17814137600001173
+20
+0.21460211860996287
+30
+1.5185866204549672
+11
+-0.17814137599998603
+21
+0.2146021186099651
+31
+1.5185866204549672
+12
+-0.09221276165912418
+22
+0.2146021186099651
+32
+1.5541794179108777
+13
+-0.09221276165912418
+23
+0.2146021186099651
+33
+1.5541794179108777
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.17814137600001173
+20
+0.21460211860996287
+30
+1.5185866204549672
+11
+-0.09221276165912418
+21
+0.2146021186099651
+31
+1.5541794179108777
+12
+0.0922127616591521
+22
+0.21460211860996398
+32
+1.5541794179108777
+13
+0.0922127616591521
+23
+0.21460211860996398
+33
+1.5541794179108777
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.0922127616591521
+20
+0.21460211860996398
+30
+1.5541794179108777
+11
+-0.09221276165912418
+21
+0.2146021186099651
+31
+1.5541794179108777
+12
+1.2823075934420558e-14
+22
+0.2146021186099651
+32
+1.5663194582927344
+13
+1.2823075934420558e-14
+23
+0.2146021186099651
+33
+1.5663194582927344
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000105
+20
+-4.496403249731884e-15
+30
+1.2100367062927357
+11
+0.34414271161815474
+21
+0.2146021186099651
+31
+1.3022494679518728
+12
+0.34414271161815474
+22
+-5.6066262743570405e-15
+32
+1.3022494679518728
+13
+0.34414271161815474
+23
+-5.6066262743570405e-15
+33
+1.3022494679518728
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.34414271161815474
+20
+0.2146021186099651
+30
+1.3022494679518728
+11
+0.3562827520000105
+21
+-4.496403249731884e-15
+31
+1.2100367062927357
+12
+0.35628275200001275
+22
+0.21460211860996398
+32
+1.2100367062927357
+13
+0.35628275200001275
+23
+0.21460211860996398
+33
+1.2100367062927357
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.34414271161815474
+20
+0.2146021186099651
+30
+1.3022494679518728
+11
+0.30854991416224326
+21
+-4.496403249731884e-15
+31
+1.3881780822927368
+12
+0.34414271161815474
+22
+-5.6066262743570405e-15
+32
+1.3022494679518728
+13
+0.34414271161815474
+23
+-5.6066262743570405e-15
+33
+1.3022494679518728
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.30854991416224326
+20
+-4.496403249731884e-15
+30
+1.3881780822927368
+11
+0.34414271161815474
+21
+0.2146021186099651
+31
+1.3022494679518728
+12
+0.3085499141622455
+22
+0.2146021186099651
+32
+1.3881780822927345
+13
+0.3085499141622455
+23
+0.2146021186099651
+33
+1.3881780822927345
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3085499141622455
+20
+0.2146021186099651
+30
+1.3881780822927345
+11
+0.2519299499590178
+21
+-4.496403249731884e-15
+31
+1.4619666562517417
+12
+0.30854991416224326
+22
+-4.496403249731884e-15
+32
+1.3881780822927368
+13
+0.30854991416224326
+23
+-4.496403249731884e-15
+33
+1.3881780822927368
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.2519299499590178
+20
+-4.496403249731884e-15
+30
+1.4619666562517417
+11
+0.3085499141622455
+21
+0.2146021186099651
+31
+1.3881780822927345
+12
+0.2519299499590178
+22
+0.2146021186099651
+32
+1.4619666562517417
+13
+0.2519299499590178
+23
+0.2146021186099651
+33
+1.4619666562517417
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.2519299499590178
+20
+-4.496403249731884e-15
+30
+1.4619666562517417
+11
+0.17814137600001173
+21
+0.21460211860996287
+31
+1.5185866204549672
+12
+0.17814137600001173
+22
+-4.496403249731884e-15
+32
+1.518586620454966
+13
+0.17814137600001173
+23
+-4.496403249731884e-15
+33
+1.518586620454966
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.17814137600001173
+20
+0.21460211860996287
+30
+1.5185866204549672
+11
+0.2519299499590178
+21
+-4.496403249731884e-15
+31
+1.4619666562517417
+12
+0.2519299499590178
+22
+0.2146021186099651
+32
+1.4619666562517417
+13
+0.2519299499590178
+23
+0.2146021186099651
+33
+1.4619666562517417
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.17814137600001173
+20
+-4.496403249731884e-15
+30
+1.518586620454966
+11
+0.0922127616591521
+21
+0.21460211860996398
+31
+1.5541794179108777
+12
+0.0922127616591521
+22
+-4.496403249731884e-15
+32
+1.5541794179108777
+13
+0.0922127616591521
+23
+-4.496403249731884e-15
+33
+1.5541794179108777
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.0922127616591521
+20
+0.21460211860996398
+30
+1.5541794179108777
+11
+0.17814137600001173
+21
+-4.496403249731884e-15
+31
+1.518586620454966
+12
+0.17814137600001173
+22
+0.21460211860996287
+32
+1.5185866204549672
+13
+0.17814137600001173
+23
+0.21460211860996287
+33
+1.5185866204549672
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.0922127616591521
+20
+-4.496403249731884e-15
+30
+1.5541794179108777
+11
+1.2823075934420558e-14
+21
+0.2146021186099651
+31
+1.5663194582927344
+12
+1.2823075934420558e-14
+22
+-5.6066262743570405e-15
+32
+1.5663194582927333
+13
+1.2823075934420558e-14
+23
+-5.6066262743570405e-15
+33
+1.5663194582927333
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.2823075934420558e-14
+20
+0.2146021186099651
+30
+1.5663194582927344
+11
+0.0922127616591521
+21
+-4.496403249731884e-15
+31
+1.5541794179108777
+12
+0.0922127616591521
+22
+0.21460211860996398
+32
+1.5541794179108777
+13
+0.0922127616591521
+23
+0.21460211860996398
+33
+1.5541794179108777
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.2823075934420558e-14
+20
+-5.6066262743570405e-15
+30
+1.5663194582927333
+11
+-0.09221276165912418
+21
+0.2146021186099651
+31
+1.5541794179108777
+12
+-0.09221276165912418
+22
+-4.496403249731884e-15
+32
+1.5541794179108777
+13
+-0.09221276165912418
+23
+-4.496403249731884e-15
+33
+1.5541794179108777
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.09221276165912418
+20
+0.2146021186099651
+30
+1.5541794179108777
+11
+1.2823075934420558e-14
+21
+-5.6066262743570405e-15
+31
+1.5663194582927333
+12
+1.2823075934420558e-14
+22
+0.2146021186099651
+32
+1.5663194582927344
+13
+1.2823075934420558e-14
+23
+0.2146021186099651
+33
+1.5663194582927344
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.09221276165912418
+20
+-4.496403249731884e-15
+30
+1.5541794179108777
+11
+-0.17814137599998603
+21
+0.2146021186099651
+31
+1.5185866204549672
+12
+-0.17814137599998603
+22
+-3.3306690738754696e-15
+32
+1.5185866204549672
+13
+-0.17814137599998603
+23
+-3.3306690738754696e-15
+33
+1.5185866204549672
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17814137599998603
+20
+0.2146021186099651
+30
+1.5185866204549672
+11
+-0.09221276165912418
+21
+-4.496403249731884e-15
+31
+1.5541794179108777
+12
+-0.09221276165912418
+22
+0.2146021186099651
+32
+1.5541794179108777
+13
+-0.09221276165912418
+23
+0.2146021186099651
+33
+1.5541794179108777
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17814137599998603
+20
+-3.3306690738754696e-15
+30
+1.5185866204549672
+11
+-0.2519299499589899
+21
+0.19495730511311
+31
+1.4619666562517406
+12
+-0.2519299499589898
+22
+-5.6066262743570405e-15
+32
+1.4619666562517406
+13
+-0.2519299499589898
+23
+-5.6066262743570405e-15
+33
+1.4619666562517406
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2519299499589899
+20
+0.19495730511311
+30
+1.4619666562517406
+11
+-0.17814137599998603
+21
+-3.3306690738754696e-15
+31
+1.5185866204549672
+12
+-0.2519299499589899
+22
+0.21460211860996398
+32
+1.4619666562517406
+13
+-0.2519299499589899
+23
+0.21460211860996398
+33
+1.4619666562517406
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2519299499589899
+20
+0.21460211860996398
+30
+1.4619666562517406
+11
+-0.17814137599998603
+21
+-3.3306690738754696e-15
+31
+1.5185866204549672
+12
+-0.17814137599998603
+22
+0.2146021186099651
+32
+1.5185866204549672
+13
+-0.17814137599998603
+23
+0.2146021186099651
+33
+1.5185866204549672
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2519299499589899
+20
+0.19495730511311
+30
+1.4619666562517406
+11
+-0.30854991416221755
+21
+-4.496403249731884e-15
+31
+1.3881780822927345
+12
+-0.2519299499589898
+22
+-5.6066262743570405e-15
+32
+1.4619666562517406
+13
+-0.2519299499589898
+23
+-5.6066262743570405e-15
+33
+1.4619666562517406
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30854991416221755
+20
+-4.496403249731884e-15
+30
+1.3881780822927345
+11
+-0.2519299499589899
+21
+0.19495730511311
+31
+1.4619666562517406
+12
+-0.30854991416221755
+22
+0.21460211860996398
+32
+1.3881780822927345
+13
+-0.30854991416221755
+23
+0.21460211860996398
+33
+1.3881780822927345
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30854991416221755
+20
+0.21460211860996398
+30
+1.3881780822927345
+11
+-0.2519299499589899
+21
+0.19495730511311
+31
+1.4619666562517406
+12
+-0.2519299499589899
+22
+0.21460211860996398
+32
+1.4619666562517406
+13
+-0.2519299499589899
+23
+0.21460211860996398
+33
+1.4619666562517406
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30854991416221755
+20
+0.21460211860996398
+30
+1.3881780822927345
+11
+-0.31759179099011786
+21
+-4.496403249731884e-15
+31
+1.3663490606255115
+12
+-0.30854991416221755
+22
+-4.496403249731884e-15
+32
+1.3881780822927345
+13
+-0.30854991416221755
+23
+-4.496403249731884e-15
+33
+1.3881780822927345
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.31759179099011786
+20
+-4.496403249731884e-15
+30
+1.3663490606255115
+11
+-0.34414271161812904
+21
+0.21460211860996398
+31
+1.3022494679518728
+12
+-0.3441427116181268
+22
+-5.6066262743570405e-15
+32
+1.3022494679518728
+13
+-0.3441427116181268
+23
+-5.6066262743570405e-15
+33
+1.3022494679518728
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.34414271161812904
+20
+0.21460211860996398
+30
+1.3022494679518728
+11
+-0.31759179099011786
+21
+-4.496403249731884e-15
+31
+1.3663490606255115
+12
+-0.30854991416221755
+22
+0.21460211860996398
+32
+1.3881780822927345
+13
+-0.30854991416221755
+23
+0.21460211860996398
+33
+1.3881780822927345
+70
+15
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.34414271161812904
+20
+0.21460211860996398
+30
+1.3022494679518728
+11
+-0.30854991416221755
+21
+0.21460211860996398
+31
+1.3881780822927345
+12
+-0.31759179099011564
+22
+0.2146021186099651
+32
+1.3663490606255126
+13
+-0.31759179099011564
+23
+0.2146021186099651
+33
+1.3663490606255126
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.32045933822158423
+20
+0.1850172851865613
+30
+0.8895773680711375
+11
+-0.24582951358828667
+21
+0.24582951358829058
+31
+0.7683733084958861
+12
+-0.30107843600394635
+22
+0.17382771607406938
+32
+0.7683733084958861
+13
+-0.30107843600394635
+23
+0.17382771607406938
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828667
+20
+0.24582951358829058
+30
+0.7683733084958861
+11
+-0.32045933822158423
+21
+0.1850172851865613
+31
+0.8895773680711375
+12
+-0.29397599311384076
+22
+0.22749485479893866
+32
+0.9160607131788822
+13
+-0.29397599311384076
+23
+0.22749485479893866
+33
+0.9160607131788822
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828667
+20
+0.24582951358829058
+30
+0.7683733084958861
+11
+-0.29397599311384076
+21
+0.22749485479893866
+31
+0.9160607131788822
+12
+-0.26844496678834595
+22
+0.26844496678835666
+32
+0.9415917395043769
+13
+-0.26844496678834595
+23
+0.26844496678835666
+33
+0.9415917395043769
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.26844496678834595
+20
+0.26844496678835666
+30
+0.9415917395043769
+11
+-0.17382771607407105
+21
+0.3010784360039514
+31
+0.7683733084958873
+12
+-0.24582951358828667
+22
+0.24582951358829058
+32
+0.7683733084958861
+13
+-0.24582951358828667
+23
+0.24582951358829058
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607407105
+20
+0.3010784360039514
+30
+0.7683733084958873
+11
+-0.26844496678834595
+21
+0.26844496678835666
+31
+0.9415917395043769
+12
+-0.19646449928738383
+22
+0.3402864946493293
+32
+1.013572207005339
+13
+-0.19646449928738383
+23
+0.3402864946493293
+33
+1.013572207005339
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607407105
+20
+0.3010784360039514
+30
+0.7683733084958873
+11
+-0.10601971888034317
+21
+0.39567097746564023
+31
+1.1040169874123784
+12
+-0.0899798469732796
+22
+0.3358093605615798
+32
+0.768373308495885
+13
+-0.0899798469732796
+23
+0.3358093605615798
+33
+0.768373308495885
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.10601971888034317
+20
+0.39567097746564023
+30
+1.1040169874123784
+11
+-0.17382771607407105
+21
+0.3010784360039514
+31
+0.7683733084958873
+12
+-0.19646449928738383
+22
+0.3402864946493293
+32
+1.013572207005339
+13
+-0.19646449928738383
+23
+0.3402864946493293
+33
+1.013572207005339
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3518308750436484
+20
+0.09427279884027734
+30
+0.8582058312490733
+11
+-0.30107843600394635
+21
+0.17382771607406938
+31
+0.7683733084958861
+12
+-0.3358093605615814
+22
+0.08997984697328248
+32
+0.7683733084958861
+13
+-0.3358093605615814
+23
+0.08997984697328248
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30107843600394635
+20
+0.17382771607406938
+30
+0.7683733084958861
+11
+-0.3518308750436484
+21
+0.09427279884027734
+31
+0.8582058312490733
+12
+-0.32045933822158423
+22
+0.1850172851865613
+32
+0.8895773680711375
+13
+-0.32045933822158423
+23
+0.1850172851865613
+33
+0.8895773680711375
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3623076845685704
+20
+-4.496403249731884e-15
+30
+0.8477290217241491
+11
+-0.3358093605615814
+21
+0.08997984697328248
+31
+0.7683733084958861
+12
+-0.3476554321481416
+22
+-7.827072323607354e-15
+32
+0.7683733084958861
+13
+-0.3476554321481416
+23
+-7.827072323607354e-15
+33
+0.7683733084958861
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3358093605615814
+20
+0.08997984697328248
+30
+0.7683733084958861
+11
+-0.3623076845685704
+21
+-4.496403249731884e-15
+31
+0.8477290217241491
+12
+-0.3518308750436484
+22
+0.09427279884027734
+32
+0.8582058312490733
+13
+-0.3518308750436484
+23
+0.09427279884027734
+33
+0.8582058312490733
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.10601971888034317
+20
+0.39567097746564023
+30
+1.1040169874123784
+11
+8.43769498715119e-15
+21
+0.3476554321481467
+31
+0.7683733084958861
+12
+-0.0899798469732796
+22
+0.3358093605615798
+32
+0.768373308495885
+13
+-0.0899798469732796
+23
+0.3358093605615798
+33
+0.768373308495885
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+8.43769498715119e-15
+20
+0.3476554321481467
+30
+0.7683733084958861
+11
+-0.10601971888034317
+21
+0.39567097746564023
+31
+1.1040169874123784
+12
+1.0658141036401503e-14
+22
+0.4292042372199358
+32
+1.2100367062927369
+13
+1.0658141036401503e-14
+23
+0.4292042372199358
+33
+1.2100367062927369
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3441427116181268
+20
+0.21460211860996398
+30
+1.1178239446335976
+11
+-0.3085499141622175
+21
+-4.496403249731884e-15
+31
+1.0318953302927392
+12
+-0.34414271161812904
+22
+-5.6066262743570405e-15
+32
+1.1178239446335965
+13
+-0.34414271161812904
+23
+-5.6066262743570405e-15
+33
+1.1178239446335965
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3085499141622175
+20
+-4.496403249731884e-15
+30
+1.0318953302927392
+11
+-0.3441427116181268
+21
+0.21460211860996398
+31
+1.1178239446335976
+12
+-0.30854991416221755
+22
+0.2146021186099651
+32
+1.031895330292737
+13
+-0.30854991416221755
+23
+0.2146021186099651
+33
+1.031895330292737
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.34414271161812904
+20
+0.21460211860996398
+30
+1.3022494679518728
+11
+-0.3562827519999848
+21
+-4.496403249731884e-15
+31
+1.2100367062927357
+12
+-0.3441427116181268
+22
+-5.6066262743570405e-15
+32
+1.3022494679518728
+13
+-0.3441427116181268
+23
+-5.6066262743570405e-15
+33
+1.3022494679518728
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3562827519999848
+20
+-4.496403249731884e-15
+30
+1.2100367062927357
+11
+-0.34414271161812904
+21
+0.21460211860996398
+31
+1.3022494679518728
+12
+-0.3562827519999848
+22
+0.2146021186099651
+32
+1.210036706292738
+13
+-0.3562827519999848
+23
+0.2146021186099651
+33
+1.210036706292738
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3562827519999848
+20
+-4.496403249731884e-15
+30
+1.2100367062927357
+11
+-0.3441427116181268
+21
+0.21460211860996398
+31
+1.1178239446335976
+12
+-0.34414271161812904
+22
+-5.6066262743570405e-15
+32
+1.1178239446335965
+13
+-0.34414271161812904
+23
+-5.6066262743570405e-15
+33
+1.1178239446335965
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3441427116181268
+20
+0.21460211860996398
+30
+1.1178239446335976
+11
+-0.3562827519999848
+21
+-4.496403249731884e-15
+31
+1.2100367062927357
+12
+-0.3562827519999848
+22
+0.2146021186099651
+32
+1.210036706292738
+13
+-0.3562827519999848
+23
+0.2146021186099651
+33
+1.210036706292738
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3085499141622175
+20
+-4.496403249731884e-15
+30
+1.0318953302927392
+11
+-0.25192994995899204
+21
+0.19495730511311
+31
+0.9581067563337331
+12
+-0.25192994995898976
+22
+-5.6066262743570405e-15
+32
+0.958106756333732
+13
+-0.25192994995898976
+23
+-5.6066262743570405e-15
+33
+0.958106756333732
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899204
+20
+0.19495730511311
+30
+0.9581067563337331
+11
+-0.3085499141622175
+21
+-4.496403249731884e-15
+31
+1.0318953302927392
+12
+-0.30854991416221755
+22
+0.2146021186099651
+32
+1.031895330292737
+13
+-0.30854991416221755
+23
+0.2146021186099651
+33
+1.031895330292737
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899204
+20
+0.19495730511311
+30
+0.9581067563337331
+11
+-0.30854991416221755
+21
+0.2146021186099651
+31
+1.031895330292737
+12
+-0.25192994995899204
+22
+0.2146021186099651
+32
+0.9581067563337309
+13
+-0.25192994995899204
+23
+0.2146021186099651
+33
+0.9581067563337309
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.0658141036401503e-14
+20
+0.4292042372199358
+30
+1.2100367062927369
+11
+-0.25192994995899204
+21
+0.2146021186099651
+31
+0.9581067563337309
+12
+1.5154544286133387e-14
+22
+0.2146021186099651
+32
+1.210036706292738
+13
+1.5154544286133387e-14
+23
+0.2146021186099651
+33
+1.210036706292738
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899204
+20
+0.2146021186099651
+30
+0.9581067563337309
+11
+1.0658141036401503e-14
+21
+0.4292042372199358
+31
+1.2100367062927369
+12
+-0.29397599311384076
+22
+0.22749485479893866
+32
+0.9160607131788822
+13
+-0.29397599311384076
+23
+0.22749485479893866
+33
+0.9160607131788822
+70
+15
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.29397599311384076
+20
+0.22749485479893866
+30
+0.9160607131788822
+11
+1.0658141036401503e-14
+21
+0.4292042372199358
+31
+1.2100367062927369
+12
+-0.26844496678834595
+22
+0.26844496678835666
+32
+0.9415917395043769
+13
+-0.26844496678834595
+23
+0.26844496678835666
+33
+0.9415917395043769
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.26844496678834595
+20
+0.26844496678835666
+30
+0.9415917395043769
+11
+1.0658141036401503e-14
+21
+0.4292042372199358
+31
+1.2100367062927369
+12
+-0.19646449928738383
+22
+0.3402864946493293
+32
+1.013572207005339
+13
+-0.19646449928738383
+23
+0.3402864946493293
+33
+1.013572207005339
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.19646449928738383
+20
+0.3402864946493293
+30
+1.013572207005339
+11
+1.0658141036401503e-14
+21
+0.4292042372199358
+31
+1.2100367062927369
+12
+-0.10601971888034317
+22
+0.39567097746564023
+32
+1.1040169874123784
+13
+-0.10601971888034317
+23
+0.39567097746564023
+33
+1.1040169874123784
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899204
+20
+0.19495730511311
+30
+0.9581067563337331
+11
+-0.3623076845685704
+21
+-4.496403249731884e-15
+31
+0.8477290217241491
+12
+-0.25192994995898976
+22
+-5.6066262743570405e-15
+32
+0.958106756333732
+13
+-0.25192994995898976
+23
+-5.6066262743570405e-15
+33
+0.958106756333732
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3623076845685704
+20
+-4.496403249731884e-15
+30
+0.8477290217241491
+11
+-0.25192994995899204
+21
+0.19495730511311
+31
+0.9581067563337331
+12
+-0.3518308750436484
+22
+0.09427279884027734
+32
+0.8582058312490733
+13
+-0.3518308750436484
+23
+0.09427279884027734
+33
+0.8582058312490733
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3518308750436484
+20
+0.09427279884027734
+30
+0.8582058312490733
+11
+-0.25192994995899204
+21
+0.19495730511311
+31
+0.9581067563337331
+12
+-0.32045933822158423
+22
+0.1850172851865613
+32
+0.8895773680711375
+13
+-0.32045933822158423
+23
+0.1850172851865613
+33
+0.8895773680711375
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.32045933822158423
+20
+0.1850172851865613
+30
+0.8895773680711375
+11
+-0.25192994995899204
+21
+0.19495730511311
+31
+0.9581067563337331
+12
+-0.29397599311384076
+22
+0.22749485479893866
+32
+0.9160607131788822
+13
+-0.29397599311384076
+23
+0.22749485479893866
+33
+0.9160607131788822
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+-0.29397599311384076
+20
+0.22749485479893866
+30
+0.9160607131788822
+11
+-0.25192994995899204
+21
+0.19495730511311
+31
+0.9581067563337331
+12
+-0.25192994995899204
+22
+0.2146021186099651
+32
+0.9581067563337309
+13
+-0.25192994995899204
+23
+0.2146021186099651
+33
+0.9581067563337309
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.429204237219952
+20
+-1.1102230246251565e-15
+30
+1.210036706292738
+11
+0.35628275200001275
+21
+0.21460211860996398
+31
+1.2100367062927357
+12
+0.3562827520000105
+22
+-4.496403249731884e-15
+32
+1.2100367062927357
+13
+0.3562827520000105
+23
+-4.496403249731884e-15
+33
+1.2100367062927357
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.35628275200001275
+20
+0.21460211860996398
+30
+1.2100367062927357
+11
+0.429204237219952
+21
+-1.1102230246251565e-15
+31
+1.210036706292738
+12
+0.3717017728444028
+22
+0.2146021186099673
+32
+1.2100367062927369
+13
+0.3717017728444028
+23
+0.2146021186099673
+33
+1.2100367062927369
+70
+15
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.3717017728444028
+20
+0.2146021186099673
+30
+1.2100367062927369
+11
+0.429204237219952
+21
+-1.1102230246251565e-15
+31
+1.210036706292738
+12
+0.41457945748344976
+22
+0.11108623083121855
+32
+1.2100367062927369
+13
+0.41457945748344976
+23
+0.11108623083121855
+33
+1.2100367062927369
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+1.5154544286133387e-14
+20
+0.2146021186099651
+30
+1.210036706292738
+11
+0.11108623083123143
+21
+0.4145794574834358
+31
+1.2100367062927357
+12
+1.0658141036401503e-14
+22
+0.4292042372199358
+32
+1.2100367062927369
+13
+1.0658141036401503e-14
+23
+0.4292042372199358
+33
+1.2100367062927369
+70
+1
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.11108623083123143
+20
+0.4145794574834358
+30
+1.2100367062927357
+11
+1.5154544286133387e-14
+21
+0.2146021186099651
+31
+1.210036706292738
+12
+0.35628275200001275
+22
+0.21460211860996398
+32
+1.2100367062927357
+13
+0.35628275200001275
+23
+0.21460211860996398
+33
+1.2100367062927357
+70
+13
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.11108623083123143
+20
+0.4145794574834358
+30
+1.2100367062927357
+11
+0.35628275200001275
+21
+0.21460211860996398
+31
+1.2100367062927357
+12
+0.21460211860998019
+22
+0.3717017728443855
+32
+1.210036706292738
+13
+0.21460211860998019
+23
+0.3717017728443855
+33
+1.210036706292738
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.21460211860998019
+20
+0.3717017728443855
+30
+1.210036706292738
+11
+0.35628275200001275
+21
+0.21460211860996398
+31
+1.2100367062927357
+12
+0.30349322665223116
+22
+0.30349322665221606
+32
+1.2100367062927357
+13
+0.30349322665223116
+23
+0.30349322665221606
+33
+1.2100367062927357
+70
+3
+ 0
+3DFACE
+ 8
+thumb proximal
+10
+0.30349322665223116
+20
+0.30349322665221606
+30
+1.2100367062927357
+11
+0.35628275200001275
+21
+0.21460211860996398
+31
+1.2100367062927357
+12
+0.3717017728444028
+22
+0.2146021186099673
+32
+1.2100367062927369
+13
+0.3717017728444028
+23
+0.2146021186099673
+33
+1.2100367062927369
+70
+3
+ 0
+LINE
+ 8
+palm
+10
+-1.2556460136349066
+20
+0.1897458358697347
+30
+-0.029987258687020634
+11
+-1.2556460136349066
+21
+-0.07243340606868914
+31
+-0.02998725868702173
+ 0
+LINE
+ 8
+palm
+10
+-1.222231336631785
+20
+0.3432508349117811
+30
+-0.029987258687021765
+11
+-1.2235069381440584
+21
+0.3503683787193038
+31
+-0.029987259376548173
+ 0
+LINE
+ 8
+palm
+10
+-1.195492940329603
+20
+0.41164114523825557
+30
+-0.029987258687021765
+11
+-1.1969713685029186
+21
+0.41362328422976613
+31
+-0.029987259178884056
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7521367490001787
+20
+-0.37669237145944223
+30
+1.970411275796931
+11
+-1.65545853255605
+21
+-0.333700440955652
+31
+1.421192459110173
+12
+-1.625486635239021
+22
+-0.37669239221898876
+32
+1.4294077340431905
+13
+-1.625486635239021
+23
+-0.37669239221898876
+33
+1.4294077340431905
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.65545853255605
+20
+-0.333700440955652
+30
+1.421192459110173
+11
+-1.7521367490001787
+21
+-0.37669237145944223
+31
+1.970411275796931
+12
+-1.7828563212734383
+22
+-0.33370042007355216
+32
+1.9653897982274613
+13
+-1.7828563212734383
+23
+-0.33370042007355216
+33
+1.9653897982274613
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.8720848207106824
+20
+0.03421035611087325
+30
+2.573160274089795
+11
+1.895235130253219
+21
+-0.07232523842382649
+31
+2.815815258934461
+12
+1.8676957602144741
+22
+-0.07591452217505529
+32
+2.573406522256996
+13
+1.8676957602144741
+23
+-0.07591452217505529
+33
+2.573406522256996
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.895235130253219
+20
+-0.07232523842382649
+30
+2.815815258934461
+11
+1.8720848207106824
+21
+0.03421035611087325
+31
+2.573160274089795
+12
+1.8996241907494322
+22
+0.03905660376695963
+32
+2.81556901076726
+13
+1.8996241907494322
+23
+0.03905660376695963
+33
+2.81556901076726
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.7645649784997064
+21
+-0.31369755519895914
+31
+1.2062883608730788
+12
+0.7770026636877001
+22
+-0.30666149106830126
+32
+1.2221262601239269
+13
+0.7770026636877001
+23
+-0.30666149106830126
+33
+1.2221262601239269
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.7514924403831034
+21
+-0.31812034010292306
+31
+1.1900482958506116
+12
+0.7645649784997064
+22
+-0.31369755519895914
+32
+1.2062883608730788
+13
+0.7645649784997064
+23
+-0.31369755519895914
+33
+1.2062883608730788
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.7770026636877001
+21
+-0.30666149106830126
+31
+1.2221262601239269
+12
+0.7820181234396306
+22
+-0.3025385423088175
+32
+1.2286885607611746
+13
+0.7820181234396306
+23
+-0.3025385423088175
+33
+1.2286885607611746
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.9177662874185963
+20
+0.038991896669782256
+30
+2.7096710661911403
+11
+-1.8422019120038722
+21
+0.1503741409608912
+31
+1.9556890484864835
+12
+-1.8465420087821003
+22
+0.03899188499522588
+32
+1.9549796114620632
+13
+-1.8465420087821003
+23
+0.03899188499522588
+33
+1.9549796114620632
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8422019120038722
+20
+0.1503741409608912
+30
+1.9556890484864835
+11
+-1.9177662874185963
+21
+0.038991896669782256
+31
+2.7096710661911403
+12
+-1.9133981428935987
+22
+0.15037415263084852
+32
+2.7100833096854653
+13
+-1.9133981428935987
+23
+0.15037415263084852
+33
+2.7100833096854653
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7696706587222877
+20
+-0.35198670100650886
+30
+2.7811361899186524
+11
+1.767439146332895
+21
+0.42996788604843883
+31
+2.78121228382332
+12
+1.7674390181608894
+22
+-0.3519867006406931
+32
+2.7812122838233124
+13
+1.7674390181608894
+23
+-0.3519867006406931
+33
+2.7812122838233124
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.767439146332895
+20
+0.42996788604843883
+30
+2.78121228382332
+11
+1.7696706587222877
+21
+-0.35198670100650886
+31
+2.7811361899186524
+12
+1.7696707868944743
+22
+0.4299678831142456
+32
+2.7811361899186586
+13
+1.7696707868944743
+23
+0.4299678831142456
+33
+2.7811361899186586
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.4498747685188131
+20
+0.11569951797502342
+30
+1.4551784474179665
+11
+0.8335540250022027
+21
+-0.39135639924089705
+31
+1.9429380045111706
+12
+1.3505091197150552
+22
+0.11569951797502342
+32
+1.3688012067183613
+13
+1.3505091197150552
+23
+0.11569951797502342
+33
+1.3688012067183613
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8335540250022027
+20
+-0.39135639924089705
+30
+1.9429380045111706
+11
+1.4498747685188131
+21
+0.11569951797502342
+31
+1.4551784474179665
+12
+0.9532716741633414
+22
+-0.39135639924089705
+32
+2.0470069692094945
+13
+0.9532716741633414
+23
+-0.39135639924089705
+33
+2.0470069692094945
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.9133981428935987
+20
+0.15037415263084852
+30
+2.7100833096854653
+11
+-1.8294774286062707
+21
+0.2541658788276129
+31
+1.9577690125989091
+12
+-1.8422019120038722
+22
+0.1503741409608912
+32
+1.9556890484864835
+13
+-1.8422019120038722
+23
+0.1503741409608912
+33
+1.9556890484864835
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8294774286062707
+20
+0.2541658788276129
+30
+1.9577690125989091
+11
+-1.9133981428935987
+21
+0.15037415263084852
+31
+2.7100833096854653
+12
+-1.900591427663335
+22
+0.25416589048409133
+32
+2.71129194645555
+13
+-1.900591427663335
+23
+0.25416589048409133
+33
+2.71129194645555
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675027400274082
+20
+0.4189168127655707
+30
+3.5817379898496142
+11
+0.500176829057992
+21
+0.4693394935974071
+31
+3.6177054584397785
+12
+0.5001768207931099
+22
+0.41891698771371944
+32
+3.617705458439768
+13
+0.5001768207931099
+23
+0.41891698771371944
+33
+3.617705458439768
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.500176829057992
+20
+0.4693394935974071
+30
+3.6177054584397785
+11
+1.5675027400274082
+21
+0.4189168127655707
+31
+3.5817379898496142
+12
+1.567502748292268
+22
+0.4693393186492294
+32
+3.5817379898496267
+13
+1.567502748292268
+23
+0.4693393186492294
+33
+3.5817379898496267
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5511466302233783
+20
+-0.35198650127506403
+30
+2.822685108166137
+11
+1.7679994781424735
+21
+-0.3519867007325644
+31
+2.786145599142259
+12
+1.7674390181608894
+22
+-0.3519867006406931
+32
+2.7812122838233124
+13
+1.7674390181608894
+23
+-0.3519867006406931
+33
+2.7812122838233124
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7679994781424735
+20
+-0.3519867007325644
+30
+2.786145599142259
+11
+0.5511466302233783
+21
+-0.35198650127506403
+31
+2.822685108166137
+12
+1.5675026165657096
+22
+-0.3519866678686142
+32
+3.387140392775377
+13
+1.5675026165657096
+23
+-0.3519866678686142
+33
+3.387140392775377
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026165657096
+20
+-0.3519866678686142
+30
+3.387140392775377
+11
+0.5511466302233783
+21
+-0.35198650127506403
+31
+2.822685108166137
+12
+0.5001766973314854
+22
+-0.351986492920461
+32
+3.4231078613655503
+13
+0.5001766973314854
+23
+-0.351986492920461
+33
+3.4231078613655503
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736623158196023
+20
+0.41891731125080267
+30
+3.1019128637859286
+11
+-1.3438353594874726
+21
+0.42997289595543453
+31
+2.3082689981735225
+12
+-0.4070164569928685
+22
+0.42997157245158046
+32
+2.665229116319892
+13
+-0.4070164569928685
+23
+0.42997157245158046
+33
+2.665229116319892
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.900591427663335
+20
+0.25416589048409133
+30
+2.71129194645555
+11
+-1.8092357111046038
+21
+0.34329386318366695
+31
+1.9610777576823957
+12
+-1.8294774286062707
+22
+0.2541658788276129
+32
+1.9577690125989091
+13
+-1.8294774286062707
+23
+0.2541658788276129
+33
+1.9577690125989091
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8092357111046038
+20
+0.34329386318366695
+30
+1.9610777576823957
+11
+-1.900591427663335
+21
+0.25416589048409133
+31
+2.71129194645555
+12
+-1.8802188982066015
+22
+0.3432938748187082
+32
+2.713214609902885
+13
+-1.8802188982066015
+23
+0.3432938748187082
+33
+2.713214609902885
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8802188982066015
+20
+0.3432938748187082
+30
+2.713214609902885
+11
+-1.7828561990955638
+21
+0.4116841691862121
+31
+1.9653897982274586
+12
+-1.8092357111046038
+22
+0.34329386318366695
+32
+1.9610777576823957
+13
+-1.8092357111046038
+23
+0.34329386318366695
+33
+1.9610777576823957
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7828561990955638
+20
+0.4116841691862121
+30
+1.9653897982274586
+11
+-1.8802188982066015
+21
+0.3432938748187082
+31
+2.713214609902885
+12
+-1.853668908738655
+22
+0.4116841807933129
+32
+2.7157202736909
+13
+-1.853668908738655
+23
+0.4116841807933129
+33
+2.7157202736909
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7681256490688513
+20
+0.42988342156321946
+30
+2.787255060548812
+11
+0.5511467583958203
+21
+0.4299694852427818
+31
+2.8226851081661346
+12
+1.767439146332895
+22
+0.42996788604843883
+32
+2.78121228382332
+13
+1.767439146332895
+23
+0.42996788604843883
+33
+2.78121228382332
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5511467583958203
+20
+0.4299694852427818
+30
+2.8226851081661346
+11
+1.7681256490688513
+21
+0.42988342156321946
+31
+2.787255060548812
+12
+1.5675027400274082
+22
+0.4189168127655707
+32
+3.5817379898496142
+13
+1.5675027400274082
+23
+0.4189168127655707
+33
+3.5817379898496142
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.9133981794075132
+20
+-0.07239036072325872
+30
+2.710083309685462
+11
+-1.8465420087821003
+21
+0.03899188499522588
+31
+1.9549796114620632
+12
+-1.842201948517798
+22
+-0.07239037239321611
+32
+1.95568904848648
+13
+-1.842201948517798
+23
+-0.07239037239321611
+33
+1.95568904848648
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8465420087821003
+20
+0.03899188499522588
+30
+1.9549796114620632
+11
+-1.9133981794075132
+21
+-0.07239036072325872
+31
+2.710083309685462
+12
+-1.9177662874185963
+22
+0.038991896669782256
+32
+2.7096710661911403
+13
+-1.9177662874185963
+23
+0.038991896669782256
+33
+2.7096710661911403
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.853668908738655
+20
+0.4116841807933129
+30
+2.7157202736909
+11
+-1.752136612728405
+21
+0.4546761105014804
+31
+1.970411275796935
+12
+-1.7828561990955638
+22
+0.4116841691862121
+32
+1.9653897982274586
+13
+-1.7828561990955638
+23
+0.4116841691862121
+33
+1.9653897982274586
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.752136612728405
+20
+0.4546761105014804
+30
+1.970411275796935
+11
+-1.853668908738655
+21
+0.4116841807933129
+31
+2.7157202736909
+12
+-1.8227507971658294
+22
+0.45467612207602603
+32
+2.7186381809732287
+13
+-1.8227507971658294
+23
+0.45467612207602603
+33
+2.7186381809732287
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.867776432678417
+20
+0.1443314410364377
+30
+2.5734019981594765
+11
+1.8996241907494322
+21
+0.03905660376695963
+31
+2.81556901076726
+12
+1.8720848207106824
+22
+0.03421035611087325
+32
+2.573160274089795
+13
+1.8720848207106824
+23
+0.03421035611087325
+33
+2.573160274089795
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.8996241907494322
+20
+0.03905660376695963
+30
+2.81556901076726
+11
+1.867776432678417
+21
+0.1443314410364377
+31
+2.5734019981594765
+12
+1.895315802717162
+22
+0.15043460930003982
+32
+2.8158107348369414
+13
+1.895315802717162
+23
+0.15043460930003982
+33
+2.8158107348369414
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7191705821264176
+20
+-0.3913561291414933
+30
+1.975799984992849
+11
+-1.8227509334375986
+21
+-0.3766923598848876
+31
+2.718638180973225
+12
+-1.7521367490001787
+22
+-0.37669237145944223
+32
+1.970411275796931
+13
+-1.7521367490001787
+23
+-0.37669237145944223
+33
+1.970411275796931
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8227509334375986
+20
+-0.3766923598848876
+30
+2.718638180973225
+11
+-1.7191705821264176
+21
+-0.3913561291414933
+31
+1.975799984992849
+12
+-1.7895717227761132
+22
+-0.3913561176018615
+32
+2.721769481190653
+13
+-1.7895717227761132
+23
+-0.3913561176018615
+33
+2.721769481190653
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7828563212734383
+20
+-0.33370042007355216
+30
+1.9653897982274613
+11
+-1.6811959791046571
+21
+-0.2653101264104666
+31
+1.4141378425934237
+12
+-1.65545853255605
+22
+-0.333700440955652
+32
+1.421192459110173
+13
+-1.65545853255605
+23
+-0.333700440955652
+33
+1.421192459110173
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.6811959791046571
+20
+-0.2653101264104666
+30
+1.4141378425934237
+11
+-1.7828563212734383
+21
+-0.33370042007355216
+31
+1.9653897982274613
+12
+-1.8092358108624627
+22
+-0.2653101054231194
+32
+1.9610777576823943
+13
+-1.8092358108624627
+23
+-0.2653101054231194
+33
+1.9610777576823943
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8092358108624627
+20
+-0.2653101054231194
+30
+1.9610777576823943
+11
+-1.7009450104355979
+21
+-0.17618213549941947
+31
+1.4087246449502893
+12
+-1.6811959791046571
+22
+-0.2653101264104666
+32
+1.4141378425934237
+13
+-1.6811959791046571
+23
+-0.2653101264104666
+33
+1.4141378425934237
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7009450104355979
+20
+-0.17618213549941947
+30
+1.4087246449502893
+11
+-1.8092358108624627
+21
+-0.2653101054231194
+31
+1.9610777576823943
+12
+-1.8294774991457239
+22
+-0.17618211443133014
+32
+1.957769012598909
+13
+-1.8294774991457239
+23
+-0.17618211443133014
+33
+1.957769012598909
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.842201948517798
+20
+-0.07239037239321611
+30
+1.95568904848648
+11
+-1.7175941910489623
+21
+0.038991863859061116
+31
+1.404161108238109
+12
+-1.7133597627005268
+22
+-0.07239039351207949
+32
+1.405321766654406
+13
+-1.7133597627005268
+23
+-0.07239039351207949
+33
+1.405321766654406
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7175941910489623
+20
+0.038991863859061116
+30
+1.404161108238109
+11
+-1.842201948517798
+21
+-0.07239037239321611
+31
+1.95568904848648
+12
+-1.8465420087821003
+22
+0.03899188499522588
+32
+1.9549796114620632
+13
+-1.8465420087821003
+23
+0.03899188499522588
+33
+1.9549796114620632
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.2542185240067691
+20
+0.11569951797501443
+30
+1.2790087735671853
+11
+0.6053747201073587
+21
+-0.3913563992408814
+31
+1.7225878111309507
+12
+1.1611202966523455
+22
+0.11569951797501443
+32
+1.1859105462127746
+13
+1.1611202966523455
+23
+0.11569951797501443
+33
+1.1859105462127746
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.6053747201073587
+20
+-0.3913563992408814
+30
+1.7225878111309507
+11
+1.2542185240067691
+21
+0.11569951797501443
+31
+1.2790087735671853
+12
+0.7175412590885892
+22
+-0.3913563992408904
+32
+1.8347543501121704
+13
+0.7175412590885892
+23
+-0.3913563992408904
+33
+1.8347543501121704
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8465420087821003
+20
+0.03899188499522588
+30
+1.9549796114620632
+11
+-1.7133597261865965
+21
+0.15037411984202997
+31
+1.4053217666544113
+12
+-1.7175941910489623
+22
+0.038991863859061116
+32
+1.404161108238109
+13
+-1.7175941910489623
+23
+0.038991863859061116
+33
+1.404161108238109
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7133597261865965
+20
+0.15037411984202997
+30
+1.4053217666544113
+11
+-1.8465420087821003
+21
+0.03899188499522588
+31
+1.9549796114620632
+12
+-1.8422019120038722
+22
+0.1503741409608912
+32
+1.9556890484864835
+13
+-1.8422019120038722
+23
+0.1503741409608912
+33
+1.9556890484864835
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8422019120038722
+20
+0.1503741409608912
+30
+1.9556890484864835
+11
+-1.70094493989614
+21
+0.2541658577595415
+31
+1.4087246449502895
+12
+-1.7133597261865965
+22
+0.15037411984202997
+32
+1.4053217666544113
+13
+-1.7133597261865965
+23
+0.15037411984202997
+33
+1.4053217666544113
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.70094493989614
+20
+0.2541658577595415
+30
+1.4087246449502895
+11
+-1.8422019120038722
+21
+0.1503741409608912
+31
+1.9556890484864835
+12
+-1.8294774286062707
+22
+0.2541658788276129
+32
+1.9577690125989091
+13
+-1.8294774286062707
+23
+0.2541658788276129
+33
+1.9577690125989091
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8294774286062707
+20
+0.2541658788276129
+30
+1.9577690125989091
+11
+-1.6811958793467983
+21
+0.34329384219633086
+31
+1.4141378425934268
+12
+-1.70094493989614
+22
+0.2541658577595415
+32
+1.4087246449502895
+13
+-1.70094493989614
+23
+0.2541658577595415
+33
+1.4087246449502895
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.6811958793467983
+20
+0.34329384219633086
+30
+1.4141378425934268
+11
+-1.8294774286062707
+21
+0.2541658788276129
+31
+1.9577690125989091
+12
+-1.8092357111046038
+22
+0.34329386318366695
+32
+1.9610777576823957
+13
+-1.8092357111046038
+23
+0.34329386318366695
+33
+1.9610777576823957
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001768207931099
+20
+0.41891698771371944
+30
+3.617705458439768
+11
+0.5511467583958203
+21
+0.4299694852427818
+31
+2.8226851081661346
+12
+1.5675027400274082
+22
+0.4189168127655707
+32
+3.5817379898496142
+13
+1.5675027400274082
+23
+0.4189168127655707
+33
+3.5817379898496142
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8092357111046038
+20
+0.34329386318366695
+30
+1.9610777576823957
+11
+-1.6554584103781642
+21
+0.4116841483041124
+31
+1.4211924591101657
+12
+-1.6811958793467983
+22
+0.34329384219633086
+32
+1.4141378425934268
+13
+-1.6811958793467983
+23
+0.34329384219633086
+33
+1.4141378425934268
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.6554584103781642
+20
+0.4116841483041124
+30
+1.4211924591101657
+11
+-1.8092357111046038
+21
+0.34329386318366695
+31
+1.9610777576823957
+12
+-1.7828561990955638
+22
+0.4116841691862121
+32
+1.9653897982274586
+13
+-1.7828561990955638
+23
+0.4116841691862121
+33
+1.9653897982274586
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8227507971658294
+20
+0.45467612207602603
+30
+2.7186381809732287
+11
+-1.7191704410475133
+21
+0.4693398573763592
+31
+1.9757999849928503
+12
+-1.752136612728405
+22
+0.4546761105014804
+32
+1.970411275796935
+13
+-1.752136612728405
+23
+0.4546761105014804
+33
+1.970411275796935
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7191704410475133
+20
+0.4693398573763592
+30
+1.9757999849928503
+11
+-1.8227507971658294
+21
+0.45467612207602603
+31
+2.7186381809732287
+12
+-1.7895715816972064
+22
+0.4693398689159888
+32
+2.721769481190647
+13
+-1.7895715816972064
+23
+0.4693398689159888
+33
+2.721769481190647
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7828561990955638
+20
+0.4116841691862121
+30
+1.9653897982274586
+11
+-1.6254864989672675
+21
+0.4546760897419495
+31
+1.4294077340431952
+12
+-1.6554584103781642
+22
+0.4116841483041124
+32
+1.4211924591101657
+13
+-1.6554584103781642
+23
+0.4116841483041124
+33
+1.4211924591101657
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.6254864989672675
+20
+0.4546760897419495
+30
+1.4294077340431952
+11
+-1.7828561990955638
+21
+0.4116841691862121
+31
+1.9653897982274586
+12
+-1.752136612728405
+22
+0.4546761105014804
+32
+1.970411275796935
+13
+-1.752136612728405
+23
+0.4546761105014804
+33
+1.970411275796935
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.752136612728405
+20
+0.4546761105014804
+30
+1.970411275796935
+11
+-1.5933226813458456
+21
+0.4693398367483087
+31
+1.438223809982218
+12
+-1.6254864989672675
+22
+0.4546760897419495
+32
+1.4294077340431952
+13
+-1.6254864989672675
+23
+0.4546760897419495
+33
+1.4294077340431952
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.5933226813458456
+20
+0.4693398367483087
+30
+1.438223809982218
+11
+-1.752136612728405
+21
+0.4546761105014804
+31
+1.970411275796935
+12
+-1.7191704410475133
+22
+0.4693398573763592
+32
+1.9757999849928503
+13
+-1.7191704410475133
+23
+0.4693398573763592
+33
+1.9757999849928503
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.5933228224247524
+20
+-0.39135614976952593
+30
+1.4382238099822164
+11
+-1.7521367490001787
+21
+-0.37669237145944223
+31
+1.970411275796931
+12
+-1.625486635239021
+22
+-0.37669239221898876
+32
+1.4294077340431905
+13
+-1.625486635239021
+23
+-0.37669239221898876
+33
+1.4294077340431905
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7521367490001787
+20
+-0.37669237145944223
+30
+1.970411275796931
+11
+-1.5933228224247524
+21
+-0.39135614976952593
+31
+1.4382238099822164
+12
+-1.7191705821264176
+22
+-0.3913561291414933
+32
+1.975799984992849
+13
+-1.7191705821264176
+23
+-0.3913561291414933
+33
+1.975799984992849
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.4203314900532422
+20
+-0.08234123267425719
+30
+0.7240449027265381
+11
+0.5387999844805174
+21
+-0.27694418478557103
+31
+0.8016767522160716
+12
+0.45563534442351883
+22
+-0.09635017693496095
+32
+0.8188769122878267
+13
+0.45563534442351883
+23
+-0.09635017693496095
+33
+0.8188769122878267
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.45563534442351883
+20
+-0.09635017693496095
+30
+0.8188769122878267
+11
+0.5387999844805174
+21
+-0.27694418478557103
+31
+0.8016767522160716
+12
+0.5928956312949423
+22
+-0.2929528290576049
+32
+0.9561792041941095
+13
+0.5928956312949423
+23
+-0.2929528290576049
+33
+0.9561792041941095
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.3966753060057868
+20
+-0.07337409647306103
+30
+0.659508580082581
+11
+0.5387999844805174
+21
+-0.27694418478557103
+31
+0.8016767522160716
+12
+0.4203314900532422
+22
+-0.08234123267425719
+32
+0.7240449027265381
+13
+0.4203314900532422
+23
+-0.08234123267425719
+33
+0.7240449027265381
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.9017668660717575
+20
+-0.028687052013650738
+30
+1.2298393668802003
+11
+1.0500873483302444
+21
+0.11569952969883424
+31
+1.0651855328987245
+12
+1.0713278635011771
+22
+0.11569951797501443
+32
+1.0896199505044737
+13
+1.0713278635011771
+23
+0.11569951797501443
+33
+1.0896199505044737
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.4971910657083536
+20
+-0.39135639924089705
+30
+1.606575045217334
+11
+0.9017668660717575
+21
+-0.028687052013650738
+31
+1.2298393668802003
+12
+1.0713278635011771
+22
+0.11569951797501443
+32
+1.0896199505044737
+13
+1.0713278635011771
+23
+0.11569951797501443
+33
+1.0896199505044737
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001768207931099
+20
+0.41891698771371944
+30
+3.617705458439768
+11
+-0.4070164569928685
+21
+0.42997157245158046
+31
+2.665229116319892
+12
+0.5511467583958203
+22
+0.4299694852427818
+32
+2.8226851081661346
+13
+0.5511467583958203
+23
+0.4299694852427818
+33
+2.8226851081661346
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.4971910657083536
+20
+-0.39135639924089705
+30
+1.606575045217334
+11
+0.8687347277652708
+21
+-0.044300385349433036
+31
+1.2280956329668686
+12
+0.9017668660717575
+22
+-0.028687052013650738
+32
+1.2298393668802003
+13
+0.9017668660717575
+23
+-0.028687052013650738
+33
+1.2298393668802003
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.4971910657083536
+20
+-0.39135639924089705
+30
+1.606575045217334
+11
+0.39312210101004275
+21
+-0.3913563992408881
+31
+1.4868573960561888
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.1068452790069585
+20
+-0.3913563992408881
+30
+1.1069552218670458
+11
+0.02045058279261691
+21
+-0.39135639924089705
+31
+0.9739190561071899
+12
+0.4203314900532422
+22
+-0.08234123267425719
+32
+0.7240449027265381
+13
+0.4203314900532422
+23
+-0.08234123267425719
+33
+0.7240449027265381
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.29329461801529333
+21
+-0.39135639924089705
+31
+1.3635807211619237
+12
+0.6437434044296662
+22
+-0.09951752352774346
+32
+1.0897797118446357
+13
+0.6437434044296662
+23
+-0.09951752352774346
+33
+1.0897797118446357
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.8488303158904233
+20
+-0.21621663583415707
+30
+1.2727812042605189
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.84796506596995
+22
+-0.21887684142438632
+32
+1.272402865095184
+13
+0.84796506596995
+23
+-0.21887684142438632
+33
+1.272402865095184
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.29329461801529333
+20
+-0.39135639924089705
+30
+1.3635807211619237
+11
+0.1978302411349111
+21
+-0.39135639924089705
+31
+1.2368952141735952
+12
+0.5513988760171851
+22
+-0.10471927211351728
+32
+0.9800110958759284
+13
+0.5513988760171851
+23
+-0.10471927211351728
+33
+0.9800110958759284
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.06124858887884144
+20
+-0.39135639924089705
+30
+0.8379488009693535
+11
+0.3650671801086316
+21
+-0.01768427529481076
+31
+0.4316438776974501
+12
+0.3817497804163781
+22
+-0.05607568881768277
+32
+0.5821837592203328
+13
+0.3817497804163781
+23
+-0.05607568881768277
+33
+0.5821837592203328
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.06124858887884144
+20
+-0.39135639924089705
+30
+0.8379488009693535
+11
+-0.13815269815152909
+21
+-0.39135639924089705
+31
+0.6992101152648077
+12
+0.3650671801086316
+22
+-0.01768427529481076
+32
+0.4316438776974501
+13
+0.3650671801086316
+23
+-0.01768427529481076
+33
+0.4316438776974501
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001768207931099
+20
+0.41891698771371944
+30
+3.617705458439768
+11
+-0.4974273518417929
+21
+0.41891715123359774
+31
+3.4602494443357763
+12
+-0.4070164569928685
+22
+0.42997157245158046
+32
+2.665229116319892
+13
+-0.4070164569928685
+23
+0.42997157245158046
+33
+2.665229116319892
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+0.5001766973314854
+21
+-0.351986492920461
+31
+3.4231078613655503
+12
+0.5001766908782079
+22
+-0.39135649292046104
+32
+3.4231078613655503
+13
+0.5001766908782079
+23
+-0.39135649292046104
+33
+3.4231078613655503
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766973314854
+20
+-0.351986492920461
+30
+3.4231078613655503
+11
+1.5675026101124707
+21
+-0.39135666786861645
+31
+3.387140392775373
+12
+1.5675026165657096
+22
+-0.3519866678686142
+32
+3.387140392775377
+13
+1.5675026165657096
+23
+-0.3519866678686142
+33
+3.387140392775377
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.13815269815152909
+20
+-0.39135639924089705
+30
+0.6992101152648077
+11
+0.37878877702084046
+21
+0.038393783699848194
+31
+0.2706184438630661
+12
+0.3650671801086316
+22
+-0.01768427529481076
+32
+0.4316438776974501
+13
+0.3650671801086316
+23
+-0.01768427529481076
+33
+0.4316438776974501
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.13815269815152909
+20
+-0.39135639924089705
+30
+0.6992101152648077
+11
+-0.21016804921447574
+21
+-0.39135639924089705
+31
+0.5578720307110291
+12
+0.37878877702084046
+22
+0.038393783699848194
+32
+0.2706184438630661
+13
+0.37878877702084046
+23
+0.038393783699848194
+33
+0.2706184438630661
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5495724628831538
+20
+-0.10484745230472176
+30
+0.977734224044443
+11
+0.1978302411349111
+21
+-0.39135639924089705
+31
+1.2368952141735952
+12
+0.47725266850529624
+22
+-0.09848891117181602
+32
+0.8571105745168952
+13
+0.47725266850529624
+23
+-0.09848891117181602
+33
+0.8571105745168952
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.1978302411349111
+20
+-0.39135639924089705
+30
+1.2368952141735952
+11
+0.5495724628831538
+21
+-0.10484745230472176
+31
+0.977734224044443
+12
+0.5513988760171851
+22
+-0.10471927211351728
+32
+0.9800110958759284
+13
+0.5513988760171851
+23
+-0.10471927211351728
+33
+0.9800110958759284
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.1978302411349111
+20
+-0.39135639924089705
+30
+1.2368952141735952
+11
+0.1068452790069585
+21
+-0.3913563992408881
+31
+1.1069552218670458
+12
+0.47725266850529624
+22
+-0.09848891117181602
+32
+0.8571105745168952
+13
+0.47725266850529624
+23
+-0.09848891117181602
+33
+0.8571105745168952
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.40683149306505695
+20
+0.08212027273578515
+30
+0.1742805040831692
+11
+0.4285775499251552
+21
+0.11569951797502342
+31
+0.0998712621479301
+12
+0.4353642452976316
+22
+0.11569951797503464
+32
+0.11442537734154945
+13
+0.4353642452976316
+23
+0.11569951797503464
+33
+0.11442537734154945
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.21016804921447574
+20
+-0.39135639924089705
+30
+0.5578720307110291
+11
+-0.27720690245551616
+21
+-0.3913563992408904
+31
+0.4141067459925812
+12
+0.4285775499251552
+22
+0.11569951797502342
+32
+0.0998712621479301
+13
+0.4285775499251552
+23
+0.11569951797502342
+33
+0.0998712621479301
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.02045058279261691
+20
+-0.39135639924089705
+30
+0.9739190561071899
+11
+-0.06124858887884144
+21
+-0.39135639924089705
+31
+0.8379488009693535
+12
+0.3817497804163781
+22
+-0.05607568881768277
+32
+0.5821837592203328
+13
+0.3817497804163781
+23
+-0.05607568881768277
+33
+0.5821837592203328
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.552194408681052
+20
+0.11569951797501443
+30
+1.538035258303604
+11
+0.9532716741633414
+21
+-0.39135639924089705
+31
+2.0470069692094945
+12
+1.4498747685188131
+22
+0.11569951797502342
+32
+1.4551784474179665
+13
+1.4498747685188131
+23
+0.11569951797502342
+33
+1.4551784474179665
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.9532716741633414
+20
+-0.39135639924089705
+30
+2.0470069692094945
+11
+1.552194408681052
+21
+0.11569951797501443
+31
+1.538035258303604
+12
+1.076548349057601
+22
+-0.39135639924089705
+32
+2.146834452204238
+13
+1.076548349057601
+23
+-0.39135639924089705
+33
+2.146834452204238
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.84796506596995
+20
+-0.21887684142438632
+30
+1.272402865095184
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.8396041535634804
+22
+-0.23777977037520193
+32
+1.2678971062030804
+13
+0.8396041535634804
+23
+-0.23777977037520193
+33
+1.2678971062030804
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.8396041535634804
+20
+-0.23777977037520193
+30
+1.2678971062030804
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.82950587120676
+22
+-0.25533499270842597
+32
+1.2617959663934535
+13
+0.82950587120676
+23
+-0.25533499270842597
+33
+1.2617959663934535
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.82950587120676
+20
+-0.25533499270842597
+30
+1.2617959663934535
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.8178385648700359
+22
+-0.27124984964993776
+32
+1.2542011562606892
+13
+0.8178385648700359
+23
+-0.27124984964993776
+33
+1.2542011562606892
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.8178385648700359
+20
+-0.27124984964993776
+30
+1.2542011562606892
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.8047967373346043
+22
+-0.2852590285516704
+32
+1.245239287008058
+13
+0.8047967373346043
+23
+-0.2852590285516704
+33
+1.245239287008058
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.8047967373346043
+20
+-0.2852590285516704
+30
+1.245239287008058
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.7905978056850744
+22
+-0.2971289858534024
+32
+1.2350597597436686
+13
+0.7905978056850744
+23
+-0.2971289858534024
+33
+1.2350597597436686
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.7905978056850744
+20
+-0.2971289858534024
+30
+1.2350597597436686
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.7820181234396306
+22
+-0.3025385423088175
+32
+1.2286885607611746
+13
+0.7820181234396306
+23
+-0.3025385423088175
+33
+1.2286885607611746
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.45563534442351883
+20
+-0.09635017693496095
+30
+0.8188769122878267
+11
+0.5928956312949423
+21
+-0.2929528290576049
+31
+0.9561792041941095
+12
+0.47725266850529624
+22
+-0.09848891117181602
+32
+0.8571105745168952
+13
+0.47725266850529624
+23
+-0.09848891117181602
+33
+0.8571105745168952
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.538904362268551
+20
+-0.10552659486033339
+30
+0.9648346235437796
+11
+0.5928956312949423
+21
+-0.2929528290576049
+31
+0.9561792041941095
+12
+0.6829285253868831
+22
+-0.3118173806673699
+32
+1.1089028616100112
+13
+0.6829285253868831
+23
+-0.3118173806673699
+33
+1.1089028616100112
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.076548349057601
+21
+-0.39135639924089705
+31
+2.146834452204238
+12
+1.552194408681052
+22
+0.11569951797501443
+32
+1.538035258303604
+13
+1.552194408681052
+23
+0.11569951797501443
+33
+1.538035258303604
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.076548349057601
+20
+-0.39135639924089705
+30
+2.146834452204238
+11
+1.5940743769374797
+21
+0.11569951797502342
+31
+1.5695940780014193
+12
+1.6208444899815906
+22
+0.07494508113197806
+32
+1.667507102739093
+13
+1.6208444899815906
+23
+0.07494508113197806
+33
+1.667507102739093
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.076548349057601
+20
+-0.39135639924089705
+30
+2.146834452204238
+11
+1.6208444899815906
+21
+0.07494508113197806
+31
+1.667507102739093
+12
+1.2032338560459321
+22
+-0.39135639924089705
+32
+2.2422988290846195
+13
+1.2032338560459321
+23
+-0.39135639924089705
+33
+2.2422988290846195
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.36578346365589165
+20
+-0.037793429241581966
+30
+0.49733142365469324
+11
+0.5243281138766716
+21
+-0.2648824105028663
+31
+0.6559245924507474
+12
+0.3817497804163781
+22
+-0.05607568881768277
+32
+0.5821837592203328
+13
+0.3817497804163781
+23
+-0.05607568881768277
+33
+0.5821837592203328
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4974273518417929
+20
+0.41891715123359774
+30
+3.4602494443357763
+11
+-1.4736623158196023
+21
+0.41891731125080267
+31
+3.1019128637859286
+12
+-0.4070164569928685
+22
+0.42997157245158046
+32
+2.665229116319892
+13
+-0.4070164569928685
+23
+0.42997157245158046
+33
+2.665229116319892
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.1611202966523455
+20
+0.11569951797501443
+30
+1.1859105462127746
+11
+0.4971910657083536
+21
+-0.39135639924089705
+31
+1.606575045217334
+12
+1.0713278635011771
+22
+0.11569951797501443
+32
+1.0896199505044737
+13
+1.0713278635011771
+23
+0.11569951797501443
+33
+1.0896199505044737
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.4971910657083536
+20
+-0.39135639924089705
+30
+1.606575045217334
+11
+1.1611202966523455
+21
+0.11569951797501443
+31
+1.1859105462127746
+12
+0.6053747201073587
+22
+-0.3913563992408814
+32
+1.7225878111309507
+13
+0.6053747201073587
+23
+-0.3913563992408814
+33
+1.7225878111309507
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.3817497804163781
+20
+-0.05607568881768277
+30
+0.5821837592203328
+11
+0.5243281138766716
+21
+-0.2648824105028663
+31
+0.6559245924507474
+12
+0.3966753060057868
+22
+-0.07337409647306103
+32
+0.659508580082581
+13
+0.3966753060057868
+23
+-0.07337409647306103
+33
+0.659508580082581
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.6903109494372404
+20
+-0.09112388712480801
+30
+1.1269513721715114
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7589811239628956
+22
+-0.07796090531019828
+32
+1.1798646699340118
+13
+0.7589811239628956
+23
+-0.07796090531019828
+33
+1.1798646699340118
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7556951133309526
+20
+-0.07922417161832584
+30
+1.1782818075904975
+11
+0.6903109494372404
+21
+-0.09112388712480801
+31
+1.1269513721715114
+12
+0.7535113909177122
+22
+-0.07968804570622262
+32
+1.177433109344653
+13
+0.7535113909177122
+23
+-0.07968804570622262
+33
+1.177433109344653
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.3966753060057868
+20
+-0.07337409647306103
+30
+0.659508580082581
+11
+0.5243281138766716
+21
+-0.2648824105028663
+31
+0.6559245924507474
+12
+0.5387999844805174
+22
+-0.27694418478557103
+32
+0.8016767522160716
+13
+0.5387999844805174
+23
+-0.27694418478557103
+33
+0.8016767522160716
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8294774991457239
+20
+-0.17618211443133014
+30
+1.957769012598909
+11
+-1.7133597627005268
+21
+-0.07239039351207949
+31
+1.405321766654406
+12
+-1.7009450104355979
+22
+-0.17618213549941947
+32
+1.4087246449502893
+13
+-1.7009450104355979
+23
+-0.17618213549941947
+33
+1.4087246449502893
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7133597627005268
+20
+-0.07239039351207949
+30
+1.405321766654406
+11
+-1.8294774991457239
+21
+-0.17618211443133014
+31
+1.957769012598909
+12
+-1.842201948517798
+22
+-0.07239037239321611
+32
+1.95568904848648
+13
+-1.842201948517798
+23
+-0.07239037239321611
+33
+1.95568904848648
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.36578346365589165
+20
+-0.037793429241581966
+30
+0.49733142365469324
+11
+0.550466253549162
+21
+-0.25758949619382754
+31
+0.5288554937193
+12
+0.5243281138766716
+22
+-0.2648824105028663
+32
+0.6559245924507474
+13
+0.5243281138766716
+23
+-0.2648824105028663
+33
+0.6559245924507474
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.6829285253868831
+21
+-0.3118173806673699
+31
+1.1089028616100112
+12
+0.7243214720116329
+22
+-0.31887594209924797
+32
+1.1574467960018582
+13
+0.7243214720116329
+23
+-0.31887594209924797
+33
+1.1574467960018582
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.9133981794075132
+20
+-0.07239036072325872
+30
+2.710083309685462
+11
+-1.9133981428935987
+21
+0.15037415263084852
+31
+2.7100833096854653
+12
+-1.9177662874185963
+22
+0.038991896669782256
+32
+2.7096710661911403
+13
+-1.9177662874185963
+23
+0.038991896669782256
+33
+2.7096710661911403
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.9133981428935987
+20
+0.15037415263084852
+30
+2.7100833096854653
+11
+-1.9133981794075132
+21
+-0.07239036072325872
+31
+2.710083309685462
+12
+-1.900591498202793
+22
+-0.17618210277485175
+32
+2.7112919464555496
+13
+-1.900591498202793
+23
+-0.17618210277485175
+33
+2.7112919464555496
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.9133981428935987
+20
+0.15037415263084852
+30
+2.7100833096854653
+11
+-1.900591498202793
+21
+-0.17618210277485175
+31
+2.7112919464555496
+12
+-1.900591427663335
+22
+0.25416589048409133
+32
+2.71129194645555
+13
+-1.900591427663335
+23
+0.25416589048409133
+33
+2.71129194645555
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.900591427663335
+20
+0.25416589048409133
+30
+2.71129194645555
+11
+-1.900591498202793
+21
+-0.17618210277485175
+31
+2.7112919464555496
+12
+-1.8802189979644603
+22
+-0.265310093788087
+32
+2.713214609902889
+13
+-1.8802189979644603
+23
+-0.265310093788087
+33
+2.713214609902889
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.900591427663335
+20
+0.25416589048409133
+30
+2.71129194645555
+11
+-1.8802189979644603
+21
+-0.265310093788087
+31
+2.713214609902889
+12
+-1.8802188982066015
+22
+0.3432938748187082
+32
+2.713214609902885
+13
+-1.8802188982066015
+23
+0.3432938748187082
+33
+2.713214609902885
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8802188982066015
+20
+0.3432938748187082
+30
+2.713214609902885
+11
+-1.8802189979644603
+21
+-0.265310093788087
+31
+2.713214609902889
+12
+-1.8536690309165451
+22
+-0.3337004084664514
+32
+2.7157202736909
+13
+-1.8536690309165451
+23
+-0.3337004084664514
+33
+2.7157202736909
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8802188982066015
+20
+0.3432938748187082
+30
+2.713214609902885
+11
+-1.8536690309165451
+21
+-0.3337004084664514
+31
+2.7157202736909
+12
+-1.853668908738655
+22
+0.4116841807933129
+32
+2.7157202736909
+13
+-1.853668908738655
+23
+0.4116841807933129
+33
+2.7157202736909
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.853668908738655
+20
+0.4116841807933129
+30
+2.7157202736909
+11
+-1.8536690309165451
+21
+-0.3337004084664514
+31
+2.7157202736909
+12
+-1.8227509334375986
+22
+-0.3766923598848876
+32
+2.718638180973225
+13
+-1.8227509334375986
+23
+-0.3766923598848876
+33
+2.718638180973225
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.853668908738655
+20
+0.4116841807933129
+30
+2.7157202736909
+11
+-1.8227509334375986
+21
+-0.3766923598848876
+31
+2.718638180973225
+12
+-1.8227507971658294
+22
+0.45467612207602603
+32
+2.7186381809732287
+13
+-1.8227507971658294
+23
+0.45467612207602603
+33
+2.7186381809732287
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8227507971658294
+20
+0.45467612207602603
+30
+2.7186381809732287
+11
+-1.8227509334375986
+21
+-0.3766923598848876
+31
+2.718638180973225
+12
+-1.7895717227761132
+22
+-0.3913561176018615
+32
+2.721769481190653
+13
+-1.7895717227761132
+23
+-0.3913561176018615
+33
+2.721769481190653
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8227507971658294
+20
+0.45467612207602603
+30
+2.7186381809732287
+11
+-1.7895717227761132
+21
+-0.3913561176018615
+31
+2.721769481190653
+12
+-1.7895717163228786
+22
+-0.3519861176018548
+32
+2.721769481190651
+13
+-1.7895717163228786
+23
+-0.3519861176018548
+33
+2.721769481190651
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8227507971658294
+20
+0.45467612207602603
+30
+2.7186381809732287
+11
+-1.7895717163228786
+21
+-0.3519861176018548
+31
+2.721769481190651
+12
+-1.7895715899620932
+22
+0.41891736303231675
+32
+2.7217694811906528
+13
+-1.7895715899620932
+23
+0.41891736303231675
+33
+2.7217694811906528
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8227507971658294
+20
+0.45467612207602603
+30
+2.7186381809732287
+11
+-1.7895715899620932
+21
+0.41891736303231675
+31
+2.7217694811906528
+12
+-1.7895715816972064
+22
+0.4693398689159888
+32
+2.721769481190647
+13
+-1.7895715816972064
+23
+0.4693398689159888
+33
+2.721769481190647
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+0.7380029783911015
+22
+-0.3198561146257471
+32
+1.1736767991681007
+13
+0.7380029783911015
+23
+-0.3198561146257471
+33
+1.1736767991681007
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8536690309165451
+20
+-0.3337004084664514
+30
+2.7157202736909
+11
+-1.8092358108624627
+21
+-0.2653101054231194
+31
+1.9610777576823943
+12
+-1.7828563212734383
+22
+-0.33370042007355216
+32
+1.9653897982274613
+13
+-1.7828563212734383
+23
+-0.33370042007355216
+33
+1.9653897982274613
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8092358108624627
+20
+-0.2653101054231194
+30
+1.9610777576823943
+11
+-1.8536690309165451
+21
+-0.3337004084664514
+31
+2.7157202736909
+12
+-1.8802189979644603
+22
+-0.265310093788087
+32
+2.713214609902889
+13
+-1.8802189979644603
+23
+-0.265310093788087
+33
+2.713214609902889
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.7380029783911015
+21
+-0.3198561146257471
+31
+1.1736767991681007
+12
+0.7514924403831034
+22
+-0.31812034010292306
+32
+1.1900482958506116
+13
+0.7514924403831034
+23
+-0.31812034010292306
+33
+1.1900482958506116
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8802189979644603
+20
+-0.265310093788087
+30
+2.713214609902889
+11
+-1.8294774991457239
+21
+-0.17618211443133014
+31
+1.957769012598909
+12
+-1.8092358108624627
+22
+-0.2653101054231194
+32
+1.9610777576823943
+13
+-1.8092358108624627
+23
+-0.2653101054231194
+33
+1.9610777576823943
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8294774991457239
+20
+-0.17618211443133014
+30
+1.957769012598909
+11
+-1.8802189979644603
+21
+-0.265310093788087
+31
+2.713214609902889
+12
+-1.900591498202793
+22
+-0.17618210277485175
+32
+2.7112919464555496
+13
+-1.900591498202793
+23
+-0.17618210277485175
+33
+2.7112919464555496
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.900591498202793
+20
+-0.17618210277485175
+30
+2.7112919464555496
+11
+-1.842201948517798
+21
+-0.07239037239321611
+31
+1.95568904848648
+12
+-1.8294774991457239
+22
+-0.17618211443133014
+32
+1.957769012598909
+13
+-1.8294774991457239
+23
+-0.17618211443133014
+33
+1.957769012598909
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.842201948517798
+20
+-0.07239037239321611
+30
+1.95568904848648
+11
+-1.900591498202793
+21
+-0.17618210277485175
+31
+2.7112919464555496
+12
+-1.9133981794075132
+22
+-0.07239036072325872
+32
+2.710083309685462
+13
+-1.9133981794075132
+23
+-0.07239036072325872
+33
+2.710083309685462
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.8227509334375986
+20
+-0.3766923598848876
+30
+2.718638180973225
+11
+-1.7828563212734383
+21
+-0.33370042007355216
+31
+1.9653897982274613
+12
+-1.7521367490001787
+22
+-0.37669237145944223
+32
+1.970411275796931
+13
+-1.7521367490001787
+23
+-0.37669237145944223
+33
+1.970411275796931
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7828563212734383
+20
+-0.33370042007355216
+30
+1.9653897982274613
+11
+-1.8227509334375986
+21
+-0.3766923598848876
+31
+2.718638180973225
+12
+-1.8536690309165451
+22
+-0.3337004084664514
+32
+2.7157202736909
+13
+-1.8536690309165451
+23
+-0.3337004084664514
+33
+2.7157202736909
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.886816064498108
+20
+-0.07019890877981821
+30
+1.24618250303494
+11
+0.8687347277652708
+21
+-0.044300385349433036
+31
+1.2280956329668686
+12
+0.7626223302383062
+22
+-0.07769244209007636
+32
+1.1819181088261714
+13
+0.7626223302383062
+23
+-0.07769244209007636
+33
+1.1819181088261714
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.8651868766935726
+20
+-0.17830415189829452
+30
+1.2693730886615773
+11
+0.7535113909177122
+21
+-0.07968804570622262
+31
+1.177433109344653
+12
+0.8574638271061679
+22
+-0.19894064093252234
+32
+1.2718639004818764
+13
+0.8574638271061679
+23
+-0.19894064093252234
+33
+1.2718639004818764
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.8574638271061679
+20
+-0.19894064093252234
+30
+1.2718639004818764
+11
+0.7535113909177122
+21
+-0.07968804570622262
+31
+1.177433109344653
+12
+0.8488303158904233
+22
+-0.21621663583415707
+32
+1.2727812042605189
+13
+0.8488303158904233
+23
+-0.21621663583415707
+33
+1.2727812042605189
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+0.3919244872289036
+21
+0.06457671434803919
+31
+0.2055519607021757
+12
+0.6154331324746154
+22
+-0.25556244191651595
+32
+0.4291290051087077
+13
+0.6154331324746154
+23
+-0.25556244191651595
+33
+0.4291290051087077
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+0.37878877702084046
+21
+0.038393783699848194
+31
+0.2706184438630661
+12
+0.3919244872289036
+22
+0.06457671434803919
+32
+0.2055519607021757
+13
+0.3919244872289036
+23
+0.06457671434803919
+33
+0.2055519607021757
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+0.3644662888731871
+21
+0.008824680721530365
+31
+0.34279860846433485
+12
+0.37878877702084046
+22
+0.038393783699848194
+32
+0.2706184438630661
+13
+0.37878877702084046
+23
+0.038393783699848194
+33
+0.2706184438630661
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7118929082438779
+20
+-0.24734376719524606
+30
+2.311349794128884
+11
+1.4662100141123353
+21
+-0.39135639924083887
+31
+2.419678487426912
+12
+1.6812373623290522
+22
+-0.12503999284416611
+32
+2.075562797387576
+13
+1.6812373623290522
+23
+-0.12503999284416611
+33
+2.075562797387576
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.4662100141123353
+20
+-0.39135639924083887
+30
+2.419678487426912
+11
+1.7118929082438779
+21
+-0.24734376719524606
+31
+2.311349794128884
+12
+1.6021802692501754
+22
+-0.3913563992408456
+32
+2.5013776590983654
+13
+1.6021802692501754
+23
+-0.3913563992408456
+33
+2.5013776590983654
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7290602943681443
+20
+-0.3176883359983307
+30
+2.443392671427686
+11
+1.6021802692501754
+21
+-0.3913563992408456
+31
+2.5013776590983654
+12
+1.7118929082438779
+22
+-0.24734376719524606
+32
+2.311349794128884
+13
+1.7118929082438779
+23
+-0.24734376719524606
+33
+2.311349794128884
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.6021802692501754
+20
+-0.3913563992408456
+30
+2.5013776590983654
+11
+1.7290602943681443
+21
+-0.3176883359983307
+31
+2.443392671427686
+12
+1.7437745197997272
+22
+-0.3873643428597891
+32
+2.572911231993639
+13
+1.7437745197997272
+23
+-0.3873643428597891
+33
+2.572911231993639
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.6021802692501754
+20
+-0.3913563992408456
+30
+2.5013776590983654
+11
+1.7437745197997272
+21
+-0.3873643428597891
+31
+2.572911231993639
+12
+1.7409189549547188
+22
+-0.39135639924089705
+32
+2.578281768371061
+13
+1.7409189549547188
+23
+-0.39135639924089705
+33
+2.578281768371061
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.6812373623290522
+20
+-0.12503999284416611
+30
+2.075562797387576
+11
+1.3331738483524822
+21
+-0.39135639924089705
+31
+2.3332837912125775
+12
+1.6530814000858174
+22
+-0.015885077497869327
+32
+1.8590013414803237
+13
+1.6530814000858174
+23
+-0.015885077497869327
+33
+1.8590013414803237
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.3331738483524822
+20
+-0.39135639924089705
+30
+2.3332837912125775
+11
+1.6812373623290522
+21
+-0.12503999284416611
+31
+2.075562797387576
+12
+1.4662100141123353
+22
+-0.39135639924083887
+32
+2.419678487426912
+13
+1.4662100141123353
+23
+-0.39135639924083887
+33
+2.419678487426912
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.634839673189293
+20
+0.05269022449133848
+30
+1.7186951844850438
+11
+1.2032338560459321
+21
+-0.39135639924089705
+31
+2.2422988290846195
+12
+1.6208444899815906
+22
+0.07494508113197806
+32
+1.667507102739093
+13
+1.6208444899815906
+23
+0.07494508113197806
+33
+1.667507102739093
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.2032338560459321
+20
+-0.39135639924089705
+30
+2.2422988290846195
+11
+1.634839673189293
+21
+0.05269022449133848
+31
+1.7186951844850438
+12
+1.6530814000858174
+22
+-0.015885077497869327
+32
+1.8590013414803237
+13
+1.6530814000858174
+23
+-0.015885077497869327
+33
+1.8590013414803237
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.2032338560459321
+20
+-0.39135639924089705
+30
+2.2422988290846195
+11
+1.6530814000858174
+21
+-0.015885077497869327
+31
+1.8590013414803237
+12
+1.3331738483524822
+22
+-0.39135639924089705
+32
+2.3332837912125775
+13
+1.3331738483524822
+23
+-0.39135639924089705
+33
+2.3332837912125775
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.772154666688709
+20
+-0.3913567014136412
+30
+2.822720712115689
+11
+1.7926934652283346
+21
+-0.3519867047802352
+31
+3.166557627574764
+12
+1.7926934587751069
+22
+-0.3913567047802016
+32
+3.1665576275747647
+13
+1.7926934587751069
+23
+-0.3913567047802016
+33
+3.1665576275747647
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7926934652283346
+20
+-0.3519867047802352
+30
+3.166557627574764
+11
+1.772154666688709
+21
+-0.3913567014136412
+31
+2.822720712115689
+12
+1.7721546731419455
+22
+-0.3519867014136748
+32
+2.8227207121156908
+13
+1.7721546731419455
+23
+-0.3519867014136748
+33
+2.8227207121156908
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7674390181608894
+20
+-0.3519867006406931
+30
+2.7812122838233124
+11
+0.5511467583958203
+21
+0.4299694852427818
+31
+2.8226851081661346
+12
+0.5511466302233783
+22
+-0.35198650127506403
+32
+2.822685108166137
+13
+0.5511466302233783
+23
+-0.35198650127506403
+33
+2.822685108166137
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5511467583958203
+20
+0.4299694852427818
+30
+2.8226851081661346
+11
+1.7674390181608894
+21
+-0.3519867006406931
+31
+2.7812122838233124
+12
+1.767439146332895
+22
+0.42996788604843883
+32
+2.78121228382332
+13
+1.767439146332895
+23
+0.42996788604843883
+33
+2.78121228382332
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7679994781424735
+20
+-0.3519867007325644
+30
+2.786145599142259
+11
+1.7721548011833212
+21
+0.429174626495198
+31
+2.82272071211574
+12
+1.7721546731419455
+22
+-0.3519867014136748
+32
+2.8227207121156908
+13
+1.7721546731419455
+23
+-0.3519867014136748
+33
+2.8227207121156908
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.7679994781424735
+21
+-0.3519867007325644
+31
+2.786145599142259
+12
+1.7674390181608894
+22
+-0.3519867006406931
+32
+2.7812122838233124
+13
+1.7674390181608894
+23
+-0.3519867006406931
+33
+2.7812122838233124
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.7674390181608894
+21
+-0.3519867006406931
+31
+2.7812122838233124
+12
+1.767439146332895
+22
+0.42996788604843883
+32
+2.78121228382332
+13
+1.767439146332895
+23
+0.42996788604843883
+33
+2.78121228382332
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.767439146332895
+21
+0.42996788604843883
+31
+2.78121228382332
+12
+1.7681256490688513
+22
+0.42988342156321946
+32
+2.787255060548812
+13
+1.7681256490688513
+23
+0.42988342156321946
+33
+2.787255060548812
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7604022996639854
+20
+0.4693398641347575
+30
+2.906434883050858
+11
+-1.7895715899620932
+21
+0.41891736303231675
+31
+2.7217694811906528
+12
+-1.7604023079288675
+22
+0.418917358251119
+32
+2.9064348830508573
+13
+-1.7604023079288675
+23
+0.418917358251119
+33
+2.9064348830508573
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895715899620932
+20
+0.41891736303231675
+30
+2.7217694811906528
+11
+-1.7604022996639854
+21
+0.4693398641347575
+31
+2.906434883050858
+12
+-1.7895715816972064
+22
+0.4693398689159888
+32
+2.721769481190647
+13
+-1.7895715816972064
+23
+0.4693398689159888
+33
+2.721769481190647
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.8042763848132697
+20
+0.4693392798390309
+30
+3.3604633371264394
+11
+1.7721548077676246
+21
+0.4693392851041711
+31
+2.8227207121156974
+12
+1.2851012666870065
+22
+0.5693393649383878
+32
+2.603406296512527
+13
+1.2851012666870065
+23
+0.5693393649383878
+33
+2.603406296512527
+70
+0
+ 0
+LINE
+ 8
+palm
+10
+1.7681256490688513
+20
+0.42988342156321946
+30
+2.787255060548812
+11
+1.7696707868944743
+21
+0.4299678831142456
+31
+2.7811361899186586
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2344292513491493
+20
+0.5693397779211644
+30
+2.1309506849853554
+11
+-1.5933226813458456
+21
+0.4693398367483087
+31
+1.438223809982218
+12
+-1.7191704438325688
+22
+0.4523487095976748
+32
+1.9757999849928511
+13
+-1.7191704438325688
+23
+0.4523487095976748
+33
+1.9757999849928511
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.7446154379169838
+21
+0.46077168557314707
+31
+2.580311975438233
+12
+1.7290604211742295
+22
+0.45593246326086423
+32
+2.4433926714277017
+13
+1.7290604211742295
+23
+0.45593246326086423
+33
+2.4433926714277017
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7446154379169838
+20
+0.46077168557314707
+30
+2.580311975438233
+11
+1.2851012666870065
+21
+0.5693393649383878
+31
+2.603406296512527
+12
+1.7721548077676246
+22
+0.4693392851041711
+32
+2.8227207121156974
+13
+1.7721548077676246
+23
+0.4693392851041711
+33
+2.8227207121156974
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8543131342530239
+20
+0.11569941919431881
+30
+0.11448043149811093
+11
+0.9877718590248896
+21
+-0.28063215797614327
+31
+0.3500300359004508
+12
+0.7110686274472025
+22
+0.11569944251109132
+32
+0.07324212630582012
+13
+0.7110686274472025
+23
+0.11569944251109132
+33
+0.07324212630582012
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.9877718590248896
+20
+-0.28063215797614327
+30
+0.3500300359004508
+11
+0.8543131342530239
+21
+0.11569941919431881
+31
+0.11448043149811093
+12
+1.1427716320422368
+22
+-0.29746965530859
+32
+0.4030272047057251
+13
+1.1427716320422368
+23
+-0.29746965530859
+33
+0.4030272047057251
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.1213215446161924
+20
+0.11569939211025415
+30
+0.2942344834828935
+11
+1.4027036824022836
+21
+-0.2851219813292338
+31
+0.5760050453303628
+12
+1.401838376859889
+22
+-0.28609456039556413
+32
+0.5748371607993987
+13
+1.401838376859889
+23
+-0.28609456039556413
+33
+0.5748371607993987
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.4027036824022836
+20
+-0.2851219813292338
+30
+0.5760050453303628
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4120521182246126
+22
+-0.27111364899581186
+32
+0.5891009093839078
+13
+1.4120521182246126
+23
+-0.27111364899581186
+33
+0.5891009093839078
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.4120521182246126
+20
+-0.27111364899581186
+30
+0.5891009093839078
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4200331617217834
+22
+-0.2551996369886165
+32
+0.6008217350052182
+13
+1.4200331617217834
+23
+-0.2551996369886165
+33
+0.6008217350052182
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.4200331617217834
+20
+-0.2551996369886165
+30
+0.6008217350052182
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4265137628895357
+22
+-0.23764524386994787
+32
+0.6109721272062122
+13
+1.4265137628895357
+23
+-0.23764524386994787
+33
+0.6109721272062122
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.4265137628895357
+20
+-0.23764524386994787
+30
+0.6109721272062122
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4313858852268917
+22
+-0.2187431145903824
+32
+0.6193828713063506
+13
+1.4313858852268917
+23
+-0.2187431145903824
+33
+0.6193828713063506
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.4313858852268917
+20
+-0.2187431145903824
+30
+0.6193828713063506
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4345683067862047
+22
+-0.19880836187696824
+32
+0.6259137538687718
+13
+1.4345683067862047
+23
+-0.19880836187696824
+33
+0.6259137538687718
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.4345683067862047
+20
+-0.19880836187696824
+30
+0.6259137538687718
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4356492647298522
+22
+-0.1833147696377279
+32
+0.6293241728716591
+13
+1.4356492647298522
+23
+-0.1833147696377279
+33
+0.6293241728716591
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.4356492647298522
+20
+-0.1833147696377279
+30
+0.6293241728716591
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.226889266259492
+22
+0.11569939018870201
+32
+0.4205002886903231
+13
+1.226889266259492
+23
+0.11569939018870201
+33
+0.4205002886903231
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721548077676246
+20
+0.4693392851041711
+30
+2.8227207121156974
+11
+1.7776419675782986
+21
+0.44515366198423323
+31
+2.578459014679979
+12
+1.7446154379169838
+22
+0.46077168557314707
+32
+2.580311975438233
+13
+1.7446154379169838
+23
+0.46077168557314707
+33
+2.580311975438233
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.1213215446161924
+20
+0.11569939211025415
+30
+0.2942344834828935
+11
+1.296235511599156
+21
+-0.31685524573416857
+31
+0.491941973587031
+12
+0.9942427643243386
+22
+0.11569940200353146
+32
+0.18985680907938893
+13
+0.9942427643243386
+23
+0.11569940200353146
+33
+0.18985680907938893
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.296235511599156
+20
+-0.31685524573416857
+30
+0.491941973587031
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.401838376859889
+22
+-0.28609456039556413
+32
+0.5748371607993987
+13
+1.401838376859889
+23
+-0.28609456039556413
+33
+0.5748371607993987
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.296235511599156
+20
+-0.31685524573416857
+30
+0.491941973587031
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3091840178343996
+22
+-0.3187418848047469
+32
+0.5028130849064316
+13
+1.3091840178343996
+23
+-0.3187418848047469
+33
+0.5028130849064316
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.3091840178343996
+20
+-0.3187418848047469
+30
+0.5028130849064316
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3253750619465394
+22
+-0.31972148211599355
+32
+0.5162341750882068
+13
+1.3253750619465394
+23
+-0.31972148211599355
+33
+0.5162341750882068
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.3253750619465394
+20
+-0.31972148211599355
+30
+0.5162341750882068
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3417030991986116
+22
+-0.31798505695875007
+32
+0.5294284687339447
+13
+1.3417030991986116
+23
+-0.31798505695875007
+33
+0.5294284687339447
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.3417030991986116
+20
+-0.31798505695875007
+30
+0.5294284687339447
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3578959289156283
+22
+-0.3135615568476812
+32
+0.5421760070341798
+13
+1.3578959289156283
+23
+-0.3135615568476812
+33
+0.5421760070341798
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.3578959289156283
+20
+-0.3135615568476812
+30
+0.5421760070341798
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3736836044342169
+22
+-0.30652472486030197
+32
+0.5542642789274219
+13
+1.3736836044342169
+23
+-0.30652472486030197
+33
+0.5542642789274219
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.3736836044342169
+20
+-0.30652472486030197
+30
+0.5542642789274219
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3888029333164453
+22
+-0.2969918702840594
+32
+0.5654917638195733
+13
+1.3888029333164453
+23
+-0.2969918702840594
+33
+0.5654917638195733
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721548077676246
+20
+0.4693392851041711
+30
+2.8227207121156974
+11
+1.805181337617048
+21
+0.4546904111007235
+31
+2.820867751357442
+12
+1.7776419675782986
+22
+0.44515366198423323
+32
+2.578459014679979
+13
+1.7776419675782986
+23
+0.44515366198423323
+33
+2.578459014679979
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7191704410475133
+20
+0.4693398573763592
+30
+1.9757999849928503
+11
+-1.7191704438325688
+21
+0.4523487095976748
+31
+1.9757999849928511
+12
+-1.5933226813458456
+22
+0.4693398367483087
+32
+1.438223809982218
+13
+-1.5933226813458456
+23
+0.4693398367483087
+33
+1.438223809982218
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895715816972064
+20
+0.4693398689159888
+30
+2.721769481190647
+11
+-1.7191704438325688
+21
+0.4523487095976748
+31
+1.9757999849928511
+12
+-1.7191704410475133
+22
+0.4693398573763592
+32
+1.9757999849928503
+13
+-1.7191704410475133
+23
+0.4693398573763592
+33
+1.9757999849928503
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.593322815971511
+20
+-0.3519861497695237
+30
+1.4382238099822156
+11
+-1.7191705821264176
+21
+-0.3913561291414933
+31
+1.975799984992849
+12
+-1.5933228224247524
+22
+-0.39135614976952593
+32
+1.4382238099822164
+13
+-1.5933228224247524
+23
+-0.39135614976952593
+33
+1.4382238099822164
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7191705821264176
+20
+-0.3913561291414933
+30
+1.975799984992849
+11
+-1.593322815971511
+21
+-0.3519861497695237
+31
+1.4382238099822156
+12
+-1.7191705756731808
+22
+-0.3519861291414911
+32
+1.975799984992848
+13
+-1.7191705756731808
+23
+-0.3519861291414911
+33
+1.975799984992848
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7191705756731808
+20
+-0.3519861291414911
+30
+1.975799984992848
+11
+-1.593322815971511
+21
+-0.3519861497695237
+31
+1.4382238099822156
+12
+-1.5933226896107346
+22
+0.4189173308646478
+32
+1.4382238099822138
+13
+-1.5933226896107346
+23
+0.4189173308646478
+33
+1.4382238099822138
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7191705756731808
+20
+-0.3519861291414911
+30
+1.975799984992848
+11
+-1.5933226896107346
+21
+0.4189173308646478
+31
+1.4382238099822138
+12
+-1.7191704493123976
+22
+0.41891735149268716
+32
+1.9757999849928494
+13
+-1.7191704493123976
+23
+0.41891735149268716
+33
+1.9757999849928494
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7191704493123976
+20
+0.41891735149268716
+30
+1.9757999849928494
+11
+-1.5933226896107346
+21
+0.4189173308646478
+31
+1.4382238099822138
+12
+-1.5933226813458456
+22
+0.4693398367483087
+32
+1.438223809982218
+13
+-1.5933226813458456
+23
+0.4693398367483087
+33
+1.438223809982218
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7191704493123976
+20
+0.41891735149268716
+30
+1.9757999849928494
+11
+-1.5933226813458456
+21
+0.4693398367483087
+31
+1.438223809982218
+12
+-1.7191704438325688
+22
+0.4523487095976748
+32
+1.9757999849928511
+13
+-1.7191704438325688
+23
+0.4523487095976748
+33
+1.9757999849928511
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.3037516634831137
+20
+0.11569939636982962
+30
+0.5600494187408283
+11
+1.3606638328112888
+21
+0.09565654957220543
+31
+0.7173692551580161
+12
+1.4074552186633607
+22
+-0.03283878934796741
+32
+0.6637847097679882
+13
+1.4074552186633607
+23
+-0.03283878934796741
+33
+0.6637847097679882
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.3606638328112888
+20
+0.09565654957220543
+30
+0.7173692551580161
+11
+1.3037516634831137
+21
+0.11569939636982962
+31
+0.5600494187408283
+12
+1.3466706909373627
+22
+0.11569941023242802
+32
+0.703371831037376
+13
+1.3466706909373627
+23
+0.11569941023242802
+33
+0.703371831037376
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736624457345466
+20
+-0.3913561693833688
+30
+2.907315266711703
+11
+-1.7895717163228786
+21
+-0.3519861176018548
+31
+2.721769481190651
+12
+-1.7895717227761132
+22
+-0.3913561176018615
+32
+2.721769481190653
+13
+-1.7895717227761132
+23
+-0.3913561176018615
+33
+2.721769481190653
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895717163228786
+20
+-0.3519861176018548
+30
+2.721769481190651
+11
+-1.4736624457345466
+21
+-0.3913561693833688
+31
+2.907315266711703
+12
+-1.4736624392813298
+22
+-0.3519861693833375
+32
+2.907315266711701
+13
+-1.4736624392813298
+23
+-0.3519861693833375
+33
+2.907315266711701
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.4265137628895357
+20
+-0.23764524386994787
+30
+0.6109721272062122
+11
+0.84796506596995
+21
+-0.21887684142438632
+31
+1.272402865095184
+12
+0.8396041535634804
+22
+-0.23777977037520193
+32
+1.2678971062030804
+13
+0.8396041535634804
+23
+-0.23777977037520193
+33
+1.2678971062030804
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.84796506596995
+20
+-0.21887684142438632
+30
+1.272402865095184
+11
+1.4265137628895357
+21
+-0.23764524386994787
+31
+0.6109721272062122
+12
+1.4313858852268917
+22
+-0.2187431145903824
+32
+0.6193828713063506
+13
+1.4313858852268917
+23
+-0.2187431145903824
+33
+0.6193828713063506
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.4313858852268917
+20
+-0.2187431145903824
+30
+0.6193828713063506
+11
+0.8488303158904233
+21
+-0.21621663583415707
+31
+1.2727812042605189
+12
+0.84796506596995
+22
+-0.21887684142438632
+32
+1.272402865095184
+13
+0.84796506596995
+23
+-0.21887684142438632
+33
+1.272402865095184
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8488303158904233
+20
+-0.21621663583415707
+30
+1.2727812042605189
+11
+1.4313858852268917
+21
+-0.2187431145903824
+31
+0.6193828713063506
+12
+1.4345683067862047
+22
+-0.19880836187696824
+32
+0.6259137538687718
+13
+1.4345683067862047
+23
+-0.19880836187696824
+33
+0.6259137538687718
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.8488303158904233
+20
+-0.21621663583415707
+30
+1.2727812042605189
+11
+1.4345683067862047
+21
+-0.19880836187696824
+31
+0.6259137538687718
+12
+0.8574638271061679
+22
+-0.19894064093252234
+32
+1.2718639004818764
+13
+0.8574638271061679
+23
+-0.19894064093252234
+33
+1.2718639004818764
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7191705756731808
+20
+-0.3519861291414911
+30
+1.975799984992848
+11
+-1.7895717227761132
+21
+-0.3913561176018615
+31
+2.721769481190653
+12
+-1.7191705821264176
+22
+-0.3913561291414933
+32
+1.975799984992849
+13
+-1.7191705821264176
+23
+-0.3913561291414933
+33
+1.975799984992849
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895717227761132
+20
+-0.3913561176018615
+30
+2.721769481190653
+11
+-1.7191705756731808
+21
+-0.3519861291414911
+31
+1.975799984992848
+12
+-1.7895717163228786
+22
+-0.3519861176018548
+32
+2.721769481190651
+13
+-1.7895717163228786
+23
+-0.3519861176018548
+33
+2.721769481190651
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895717163228786
+20
+-0.3519861176018548
+30
+2.721769481190651
+11
+-1.7191705756731808
+21
+-0.3519861291414911
+31
+1.975799984992848
+12
+-1.7191704493123976
+22
+0.41891735149268716
+32
+1.9757999849928494
+13
+-1.7191704493123976
+23
+0.41891735149268716
+33
+1.9757999849928494
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895717163228786
+20
+-0.3519861176018548
+30
+2.721769481190651
+11
+-1.7191704493123976
+21
+0.41891735149268716
+31
+1.9757999849928494
+12
+-1.7895715899620932
+22
+0.41891736303231675
+32
+2.7217694811906528
+13
+-1.7895715899620932
+23
+0.41891736303231675
+33
+2.7217694811906528
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895715899620932
+20
+0.41891736303231675
+30
+2.7217694811906528
+11
+-1.7191704493123976
+21
+0.41891735149268716
+31
+1.9757999849928494
+12
+-1.7191704438325688
+22
+0.4523487095976748
+32
+1.9757999849928511
+13
+-1.7191704438325688
+23
+0.4523487095976748
+33
+1.9757999849928511
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895715899620932
+20
+0.41891736303231675
+30
+2.7217694811906528
+11
+-1.7191704438325688
+21
+0.4523487095976748
+31
+1.9757999849928511
+12
+-1.7895715816972064
+22
+0.4693398689159888
+32
+2.721769481190647
+13
+-1.7895715816972064
+23
+0.4693398689159888
+33
+2.721769481190647
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.3417030991986116
+20
+-0.31798505695875007
+30
+0.5294284687339447
+11
+0.7380029783911015
+21
+-0.3198561146257471
+31
+1.1736767991681007
+12
+1.3253750619465394
+22
+-0.31972148211599355
+32
+0.5162341750882068
+13
+1.3253750619465394
+23
+-0.31972148211599355
+33
+0.5162341750882068
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7380029783911015
+20
+-0.3198561146257471
+30
+1.1736767991681007
+11
+1.3417030991986116
+21
+-0.31798505695875007
+31
+0.5294284687339447
+12
+0.7514924403831034
+22
+-0.31812034010292306
+32
+1.1900482958506116
+13
+0.7514924403831034
+23
+-0.31812034010292306
+33
+1.1900482958506116
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.401838376859889
+20
+-0.28609456039556413
+30
+0.5748371607993987
+11
+0.7905978056850744
+21
+-0.2971289858534024
+31
+1.2350597597436686
+12
+1.3888029333164453
+22
+-0.2969918702840594
+32
+0.5654917638195733
+13
+1.3888029333164453
+23
+-0.2969918702840594
+33
+0.5654917638195733
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7905978056850744
+20
+-0.2971289858534024
+30
+1.2350597597436686
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.4027036824022836
+22
+-0.2851219813292338
+32
+0.5760050453303628
+13
+1.4027036824022836
+23
+-0.2851219813292338
+33
+0.5760050453303628
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.7905978056850744
+20
+-0.2971289858534024
+30
+1.2350597597436686
+11
+1.4027036824022836
+21
+-0.2851219813292338
+31
+0.5760050453303628
+12
+0.8047967373346043
+22
+-0.2852590285516704
+32
+1.245239287008058
+13
+0.8047967373346043
+23
+-0.2852590285516704
+33
+1.245239287008058
+70
+1
+ 0
+LINE
+ 8
+palm
+10
+1.7290604211742295
+20
+0.45593246326086423
+30
+2.4433926714277017
+11
+1.7290602943681443
+21
+-0.3176883359983307
+31
+2.443392671427686
+ 0
+3DFACE
+ 8
+palm
+10
+1.3253750619465394
+20
+-0.31972148211599355
+30
+0.5162341750882068
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+1.3091840178343996
+22
+-0.3187418848047469
+32
+0.5028130849064316
+13
+1.3091840178343996
+23
+-0.3187418848047469
+33
+0.5028130849064316
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7243214720116329
+20
+-0.31887594209924797
+30
+1.1574467960018582
+11
+1.3253750619465394
+21
+-0.31972148211599355
+31
+0.5162341750882068
+12
+0.7380029783911015
+22
+-0.3198561146257471
+32
+1.1736767991681007
+13
+0.7380029783911015
+23
+-0.3198561146257471
+33
+1.1736767991681007
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.3736836044342169
+20
+-0.30652472486030197
+30
+0.5542642789274219
+11
+0.7645649784997064
+21
+-0.31369755519895914
+31
+1.2062883608730788
+12
+1.3578959289156283
+22
+-0.3135615568476812
+32
+0.5421760070341798
+13
+1.3578959289156283
+23
+-0.3135615568476812
+33
+0.5421760070341798
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7645649784997064
+20
+-0.31369755519895914
+30
+1.2062883608730788
+11
+1.3736836044342169
+21
+-0.30652472486030197
+31
+0.5542642789274219
+12
+0.7770026636877001
+22
+-0.30666149106830126
+32
+1.2221262601239269
+13
+0.7770026636877001
+23
+-0.30666149106830126
+33
+1.2221262601239269
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.7148013652171186
+21
+-0.2589393880700495
+31
+0.36354132201196915
+12
+0.45324313692173157
+22
+0.11569950085740732
+32
+0.10190305044442108
+13
+0.45324313692173157
+23
+0.11569950085740732
+33
+0.10190305044442108
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7148013652171186
+20
+-0.2589393880700495
+30
+0.36354132201196915
+11
+0.5742711203227493
+21
+0.11569947036484796
+31
+0.06895221585191834
+12
+0.8417991709290595
+22
+-0.2674902013547584
+32
+0.33656213664331786
+13
+0.8417991709290595
+23
+-0.2674902013547584
+33
+0.33656213664331786
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.3479240404844608
+20
+0.11569941449928345
+30
+0.7318177742169286
+11
+1.3606638328112888
+21
+0.09565654957220543
+31
+0.7173692551580161
+12
+1.3466706909373627
+22
+0.11569941023242802
+32
+0.703371831037376
+13
+1.3466706909373627
+23
+0.11569941023242802
+33
+0.703371831037376
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.226889266259492
+20
+0.11569939018870201
+30
+0.4205002886903231
+11
+1.435174589712788
+21
+-0.17817350408840257
+31
+0.6313887032404708
+12
+1.4356492647298522
+22
+-0.1833147696377279
+32
+0.6293241728716591
+13
+1.4356492647298522
+23
+-0.1833147696377279
+33
+0.6293241728716591
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.435174589712788
+20
+-0.17817350408840257
+30
+0.6313887032404708
+11
+1.226889266259492
+21
+0.11569939018870201
+31
+0.4205002886903231
+12
+1.4074552186633607
+22
+-0.03283878934796741
+32
+0.6637847097679882
+13
+1.4074552186633607
+23
+-0.03283878934796741
+33
+0.6637847097679882
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.4074552186633607
+20
+-0.03283878934796741
+30
+0.6637847097679882
+11
+1.226889266259492
+21
+0.11569939018870201
+31
+0.4205002886903231
+12
+1.3037516634831137
+22
+0.11569939636982962
+32
+0.5600494187408283
+13
+1.3037516634831137
+23
+0.11569939636982962
+33
+0.5600494187408283
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.3578959289156283
+20
+-0.3135615568476812
+30
+0.5421760070341798
+11
+0.7514924403831034
+21
+-0.31812034010292306
+31
+1.1900482958506116
+12
+1.3417030991986116
+22
+-0.31798505695875007
+32
+0.5294284687339447
+13
+1.3417030991986116
+23
+-0.31798505695875007
+33
+0.5294284687339447
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7514924403831034
+20
+-0.31812034010292306
+30
+1.1900482958506116
+11
+1.3578959289156283
+21
+-0.3135615568476812
+31
+0.5421760070341798
+12
+0.7645649784997064
+22
+-0.31369755519895914
+32
+1.2062883608730788
+13
+0.7645649784997064
+23
+-0.31369755519895914
+33
+1.2062883608730788
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.9942427643243386
+20
+0.11569940200353146
+30
+0.18985680907938893
+11
+1.1427716320422368
+21
+-0.29746965530859
+31
+0.4030272047057251
+12
+0.8543131342530239
+22
+0.11569941919431881
+32
+0.11448043149811093
+13
+0.8543131342530239
+23
+0.11569941919431881
+33
+0.11448043149811093
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.1427716320422368
+20
+-0.29746965530859
+30
+0.4030272047057251
+11
+0.9942427643243386
+21
+0.11569940200353146
+31
+0.18985680907938893
+12
+1.296235511599156
+22
+-0.31685524573416857
+32
+0.491941973587031
+13
+1.296235511599156
+23
+-0.31685524573416857
+33
+0.491941973587031
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.4200331617217834
+20
+-0.2551996369886165
+30
+0.6008217350052182
+11
+0.8178385648700359
+21
+-0.27124984964993776
+31
+1.2542011562606892
+12
+1.4120521182246126
+22
+-0.27111364899581186
+32
+0.5891009093839078
+13
+1.4120521182246126
+23
+-0.27111364899581186
+33
+0.5891009093839078
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8178385648700359
+20
+-0.27124984964993776
+30
+1.2542011562606892
+11
+1.4200331617217834
+21
+-0.2551996369886165
+31
+0.6008217350052182
+12
+0.82950587120676
+22
+-0.25533499270842597
+32
+1.2617959663934535
+13
+0.82950587120676
+23
+-0.25533499270842597
+33
+1.2617959663934535
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.886816064498108
+20
+-0.07019890877981821
+30
+1.24618250303494
+11
+0.7584040700658974
+21
+-0.07895235839940429
+31
+1.1802472966562991
+12
+0.8651868766935726
+22
+-0.17830415189829452
+32
+1.2693730886615773
+13
+0.8651868766935726
+23
+-0.17830415189829452
+33
+1.2693730886615773
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.435174589712788
+20
+-0.17817350408840257
+30
+0.6313887032404708
+11
+0.886816064498108
+21
+-0.07019890877981821
+31
+1.24618250303494
+12
+0.8651868766935726
+22
+-0.17830415189829452
+32
+1.2693730886615773
+13
+0.8651868766935726
+23
+-0.17830415189829452
+33
+1.2693730886615773
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.886816064498108
+20
+-0.07019890877981821
+30
+1.24618250303494
+11
+1.435174589712788
+21
+-0.17817350408840257
+31
+0.6313887032404708
+12
+1.4074552186633607
+22
+-0.03283878934796741
+32
+0.6637847097679882
+13
+1.4074552186633607
+23
+-0.03283878934796741
+33
+0.6637847097679882
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.886816064498108
+20
+-0.07019890877981821
+30
+1.24618250303494
+11
+1.4074552186633607
+21
+-0.03283878934796741
+31
+0.6637847097679882
+12
+0.9017668660717575
+22
+-0.028687052013650738
+32
+1.2298393668802003
+13
+0.9017668660717575
+23
+-0.028687052013650738
+33
+1.2298393668802003
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.9017668660717575
+20
+-0.028687052013650738
+30
+1.2298393668802003
+11
+1.4074552186633607
+21
+-0.03283878934796741
+31
+0.6637847097679882
+12
+1.3606638328112888
+22
+0.09565654957220543
+32
+0.7173692551580161
+13
+1.3606638328112888
+23
+0.09565654957220543
+33
+0.7173692551580161
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.9017668660717575
+20
+-0.028687052013650738
+30
+1.2298393668802003
+11
+1.3606638328112888
+21
+0.09565654957220543
+31
+0.7173692551580161
+12
+1.0500873483302444
+22
+0.11569952969883424
+32
+1.0651855328987245
+13
+1.0500873483302444
+23
+0.11569952969883424
+33
+1.0651855328987245
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.0500873483302444
+20
+0.11569952969883424
+30
+1.0651855328987245
+11
+1.3606638328112888
+21
+0.09565654957220543
+31
+0.7173692551580161
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895717163228786
+20
+-0.3519861176018548
+30
+2.721769481190651
+11
+-1.3438354876604606
+21
+-0.3519861906636493
+31
+2.3082689981735207
+12
+-1.7532288757978818
+22
+-0.35198612355890113
+32
+2.1850363490651508
+13
+-1.7532288757978818
+23
+-0.35198612355890113
+33
+2.1850363490651508
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.3438354876604606
+20
+-0.3519861906636493
+30
+2.3082689981735207
+11
+-1.7895717163228786
+21
+-0.3519861176018548
+31
+2.721769481190651
+12
+-1.4736624392813298
+22
+-0.3519861693833375
+32
+2.907315266711701
+13
+-1.4736624392813298
+23
+-0.3519861693833375
+33
+2.907315266711701
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.29329461801529333
+20
+-0.39135639924089705
+30
+1.3635807211619237
+11
+0.5551727011859529
+21
+-0.10458326330281831
+31
+0.9844541997546986
+12
+0.6406857800208818
+22
+-0.1001033428773545
+32
+1.0873129661577854
+13
+0.6406857800208818
+23
+-0.1001033428773545
+33
+1.0873129661577854
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.9877718590248896
+20
+-0.28063215797614327
+30
+0.3500300359004508
+11
+0.7148013652171186
+21
+-0.2589393880700495
+31
+0.36354132201196915
+12
+0.8417991709290595
+22
+-0.2674902013547584
+32
+0.33656213664331786
+13
+0.8417991709290595
+23
+-0.2674902013547584
+33
+0.33656213664331786
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7148013652171186
+20
+-0.2589393880700495
+30
+0.36354132201196915
+11
+0.9877718590248896
+21
+-0.28063215797614327
+31
+0.3500300359004508
+12
+1.1427716320422368
+22
+-0.29746965530859
+32
+0.4030272047057251
+13
+1.1427716320422368
+23
+-0.29746965530859
+33
+0.4030272047057251
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.7148013652171186
+20
+-0.2589393880700495
+30
+0.36354132201196915
+11
+1.1427716320422368
+21
+-0.29746965530859
+31
+0.4030272047057251
+12
+0.6154331324746154
+22
+-0.25556244191651595
+32
+0.4291290051087077
+13
+0.6154331324746154
+23
+-0.25556244191651595
+33
+0.4291290051087077
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.6154331324746154
+20
+-0.25556244191651595
+30
+0.4291290051087077
+11
+1.1427716320422368
+21
+-0.29746965530859
+31
+0.4030272047057251
+12
+1.296235511599156
+22
+-0.31685524573416857
+32
+0.491941973587031
+13
+1.296235511599156
+23
+-0.31685524573416857
+33
+0.491941973587031
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.6154331324746154
+20
+-0.25556244191651595
+30
+0.4291290051087077
+11
+1.296235511599156
+21
+-0.31685524573416857
+31
+0.491941973587031
+12
+0.550466253549162
+22
+-0.25758949619382754
+32
+0.5288554937193
+13
+0.550466253549162
+23
+-0.25758949619382754
+33
+0.5288554937193
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+1.296235511599156
+21
+-0.31685524573416857
+31
+0.491941973587031
+12
+1.3091840178343996
+22
+-0.3187418848047469
+32
+0.5028130849064316
+13
+1.3091840178343996
+23
+-0.3187418848047469
+33
+0.5028130849064316
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+1.3091840178343996
+21
+-0.3187418848047469
+31
+0.5028130849064316
+12
+0.7243214720116329
+22
+-0.31887594209924797
+32
+1.1574467960018582
+13
+0.7243214720116329
+23
+-0.31887594209924797
+33
+1.1574467960018582
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+0.5243281138766716
+22
+-0.2648824105028663
+32
+0.6559245924507474
+13
+0.5243281138766716
+23
+-0.2648824105028663
+33
+0.6559245924507474
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.5243281138766716
+20
+-0.2648824105028663
+30
+0.6559245924507474
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+0.5387999844805174
+22
+-0.27694418478557103
+32
+0.8016767522160716
+13
+0.5387999844805174
+23
+-0.27694418478557103
+33
+0.8016767522160716
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.5387999844805174
+20
+-0.27694418478557103
+30
+0.8016767522160716
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+0.5928956312949423
+22
+-0.2929528290576049
+32
+0.9561792041941095
+13
+0.5928956312949423
+23
+-0.2929528290576049
+33
+0.9561792041941095
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.5928956312949423
+20
+-0.2929528290576049
+30
+0.9561792041941095
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+0.6829285253868831
+22
+-0.3118173806673699
+32
+1.1089028616100112
+13
+0.6829285253868831
+23
+-0.3118173806673699
+33
+1.1089028616100112
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.8676957602144741
+20
+-0.07591452217505529
+30
+2.573406522256996
+11
+1.882447728448143
+21
+-0.1761204287941148
+31
+2.8165326979329053
+12
+1.8549083584093868
+22
+-0.17853836535603948
+32
+2.5741239612554403
+13
+1.8549083584093868
+23
+-0.17853836535603948
+33
+2.5741239612554403
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.882447728448143
+20
+-0.1761204287941148
+30
+2.8165326979329053
+11
+1.8676957602144741
+21
+-0.07591452217505529
+31
+2.573406522256996
+12
+1.895235130253219
+22
+-0.07232523842382649
+32
+2.815815258934461
+13
+1.895235130253219
+23
+-0.07232523842382649
+33
+2.815815258934461
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.9017668660717575
+20
+-0.028687052013650738
+30
+1.2298393668802003
+11
+0.8687347277652708
+21
+-0.044300385349433036
+31
+1.2280956329668686
+12
+0.886816064498108
+22
+-0.07019890877981821
+32
+1.24618250303494
+13
+0.886816064498108
+23
+-0.07019890877981821
+33
+1.24618250303494
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.4120521182246126
+20
+-0.27111364899581186
+30
+0.5891009093839078
+11
+0.8047967373346043
+21
+-0.2852590285516704
+31
+1.245239287008058
+12
+1.4027036824022836
+22
+-0.2851219813292338
+32
+0.5760050453303628
+13
+1.4027036824022836
+23
+-0.2851219813292338
+33
+0.5760050453303628
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8047967373346043
+20
+-0.2852590285516704
+30
+1.245239287008058
+11
+1.4120521182246126
+21
+-0.27111364899581186
+31
+0.5891009093839078
+12
+0.8178385648700359
+22
+-0.27124984964993776
+32
+1.2542011562606892
+13
+0.8178385648700359
+23
+-0.27124984964993776
+33
+1.2542011562606892
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.6675651975985641
+20
+0.05980434249020211
+30
+1.716859107888579
+11
+1.6208444899815906
+21
+0.07494508113197806
+31
+1.667507102739093
+12
+1.5940743769374797
+22
+0.11569951797502342
+32
+1.5695940780014193
+13
+1.5940743769374797
+23
+0.11569951797502342
+33
+1.5695940780014193
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.4345683067862047
+20
+-0.19880836187696824
+30
+0.6259137538687718
+11
+0.8651868766935726
+21
+-0.17830415189829452
+31
+1.2693730886615773
+12
+0.8574638271061679
+22
+-0.19894064093252234
+32
+1.2718639004818764
+13
+0.8574638271061679
+23
+-0.19894064093252234
+33
+1.2718639004818764
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8651868766935726
+20
+-0.17830415189829452
+30
+1.2693730886615773
+11
+1.4345683067862047
+21
+-0.19880836187696824
+31
+0.6259137538687718
+12
+1.4356492647298522
+22
+-0.1833147696377279
+32
+0.6293241728716591
+13
+1.4356492647298522
+23
+-0.1833147696377279
+33
+0.6293241728716591
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.8651868766935726
+20
+-0.17830415189829452
+30
+1.2693730886615773
+11
+1.4356492647298522
+21
+-0.1833147696377279
+31
+0.6293241728716591
+12
+1.435174589712788
+22
+-0.17817350408840257
+32
+0.6313887032404708
+13
+1.435174589712788
+23
+-0.17817350408840257
+33
+0.6313887032404708
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736623158196023
+20
+0.41891731125080267
+30
+3.1019128637859286
+11
+-1.7604022996639854
+21
+0.4693398641347575
+31
+2.906434883050858
+12
+-1.7604023079288675
+22
+0.418917358251119
+32
+2.9064348830508573
+13
+-1.7604023079288675
+23
+0.418917358251119
+33
+2.9064348830508573
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7604022996639854
+20
+0.4693398641347575
+30
+2.906434883050858
+11
+-1.4736623158196023
+21
+0.41891731125080267
+31
+3.1019128637859286
+12
+-1.4736623075547448
+22
+0.4693398171344658
+32
+3.1019128637859295
+13
+-1.4736623075547448
+23
+0.4693398171344658
+33
+3.1019128637859295
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7110686274472025
+20
+0.11569944251109132
+30
+0.07324212630582012
+11
+0.8417991709290595
+21
+-0.2674902013547584
+31
+0.33656213664331786
+12
+0.5742711203227493
+22
+0.11569947036484796
+32
+0.06895221585191834
+13
+0.5742711203227493
+23
+0.11569947036484796
+33
+0.06895221585191834
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8417991709290595
+20
+-0.2674902013547584
+30
+0.33656213664331786
+11
+0.7110686274472025
+21
+0.11569944251109132
+31
+0.07324212630582012
+12
+0.9877718590248896
+22
+-0.28063215797614327
+32
+0.3500300359004508
+13
+0.9877718590248896
+23
+-0.28063215797614327
+33
+0.3500300359004508
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.4200331617217834
+20
+-0.2551996369886165
+30
+0.6008217350052182
+11
+0.8396041535634804
+21
+-0.23777977037520193
+31
+1.2678971062030804
+12
+0.82950587120676
+22
+-0.25533499270842597
+32
+1.2617959663934535
+13
+0.82950587120676
+23
+-0.25533499270842597
+33
+1.2617959663934535
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8396041535634804
+20
+-0.23777977037520193
+30
+1.2678971062030804
+11
+1.4200331617217834
+21
+-0.2551996369886165
+31
+0.6008217350052182
+12
+1.4265137628895357
+22
+-0.23764524386994787
+32
+0.6109721272062122
+13
+1.4265137628895357
+23
+-0.23764524386994787
+33
+0.6109721272062122
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.3438354876604606
+20
+-0.3519861906636493
+30
+2.3082689981735207
+11
+-1.7532287476248738
+21
+0.42997336695883304
+31
+2.1850363490651525
+12
+-1.7532288757978818
+22
+-0.35198612355890113
+32
+2.1850363490651508
+13
+-1.7532288757978818
+23
+-0.35198612355890113
+33
+2.1850363490651508
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7532287476248738
+20
+0.42997336695883304
+30
+2.1850363490651525
+11
+-1.3438354876604606
+21
+-0.3519861906636493
+31
+2.3082689981735207
+12
+-1.3438353594874726
+22
+0.42997289595543453
+32
+2.3082689981735225
+13
+-1.3438353594874726
+23
+0.42997289595543453
+33
+2.3082689981735225
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.3888029333164453
+20
+-0.2969918702840594
+30
+0.5654917638195733
+11
+0.7770026636877001
+21
+-0.30666149106830126
+31
+1.2221262601239269
+12
+1.3736836044342169
+22
+-0.30652472486030197
+32
+0.5542642789274219
+13
+1.3736836044342169
+23
+-0.30652472486030197
+33
+0.5542642789274219
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7770026636877001
+20
+-0.30666149106830126
+30
+1.2221262601239269
+11
+1.3888029333164453
+21
+-0.2969918702840594
+31
+0.5654917638195733
+12
+0.7905978056850744
+22
+-0.2971289858534024
+32
+1.2350597597436686
+13
+0.7905978056850744
+23
+-0.2971289858534024
+33
+1.2350597597436686
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.7770026636877001
+20
+-0.30666149106830126
+30
+1.2221262601239269
+11
+0.7905978056850744
+21
+-0.2971289858534024
+31
+1.2350597597436686
+12
+0.7820181234396306
+22
+-0.3025385423088175
+32
+1.2286885607611746
+13
+0.7820181234396306
+23
+-0.3025385423088175
+33
+1.2286885607611746
+70
+1
+ 0
+LINE
+ 8
+palm
+10
+1.6348397414833575
+20
+0.4693393076118373
+30
+1.7186951844850427
+11
+1.634839673189293
+21
+0.05269022449133848
+31
+1.7186951844850438
+ 0
+3DFACE
+ 8
+palm
+10
+0.6656080837778451
+20
+-0.09556715674214389
+30
+1.1072238076213345
+11
+0.39312210101004275
+21
+-0.3913563992408881
+31
+1.4868573960561888
+12
+0.6454971629912596
+22
+-0.09918946164044506
+32
+1.0911506801973632
+13
+0.6454971629912596
+23
+-0.09918946164044506
+33
+1.0911506801973632
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.6656080837778451
+21
+-0.09556715674214389
+31
+1.1072238076213345
+12
+0.6738975482255489
+22
+-0.09407408897106695
+32
+1.113848945264622
+13
+0.6738975482255489
+23
+-0.09407408897106695
+33
+1.113848945264622
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.804880263882849
+20
+-0.37666065849100255
+30
+2.8208846355192323
+11
+1.7446152966499613
+21
+-0.3913456583466878
+31
+2.580311975438275
+12
+1.7773408938440884
+22
+-0.37681546288299567
+32
+2.578475898841768
+13
+1.7773408938440884
+23
+-0.37681546288299567
+33
+2.578475898841768
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7446152966499613
+20
+-0.3913456583466878
+30
+2.580311975438275
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.772154666688709
+22
+-0.3913567014136412
+32
+2.822720712115689
+13
+1.772154666688709
+23
+-0.3913567014136412
+33
+2.822720712115689
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.6348397414833575
+21
+0.4693393076118373
+31
+1.7186951844850427
+12
+1.5940745180163998
+22
+0.4698512386274375
+32
+1.569594078001374
+13
+1.5940745180163998
+23
+0.4698512386274375
+33
+1.569594078001374
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.7589811239628956
+20
+-0.07796090531019828
+30
+1.1798646699340118
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.546029358796021
+20
+-0.10514823446237304
+30
+0.9734561491256183
+11
+0.538904362268551
+21
+-0.10552659486033339
+31
+0.9648346235437796
+12
+0.6829285253868831
+22
+-0.3118173806673699
+32
+1.1089028616100112
+13
+0.6829285253868831
+23
+-0.3118173806673699
+33
+1.1089028616100112
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.02045058279261691
+20
+-0.39135639924089705
+30
+0.9739190561071899
+11
+0.3966753060057868
+21
+-0.07337409647306103
+31
+0.659508580082581
+12
+0.4203314900532422
+22
+-0.08234123267425719
+32
+0.7240449027265381
+13
+0.4203314900532422
+23
+-0.08234123267425719
+33
+0.7240449027265381
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.21016804921447574
+20
+-0.39135639924089705
+30
+0.5578720307110291
+11
+0.4285775499251552
+21
+0.11569951797502342
+31
+0.0998712621479301
+12
+0.40683149306505695
+22
+0.08212027273578515
+32
+0.1742805040831692
+13
+0.40683149306505695
+23
+0.08212027273578515
+33
+0.1742805040831692
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.21016804921447574
+20
+-0.39135639924089705
+30
+0.5578720307110291
+11
+0.40683149306505695
+21
+0.08212027273578515
+31
+0.1742805040831692
+12
+0.37878877702084046
+22
+0.038393783699848194
+32
+0.2706184438630661
+13
+0.37878877702084046
+23
+0.038393783699848194
+33
+0.2706184438630661
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.7626223302383062
+20
+-0.07769244209007636
+30
+1.1819181088261714
+11
+0.7584040700658974
+21
+-0.07895235839940429
+31
+1.1802472966562991
+12
+0.7589811239628956
+22
+-0.07796090531019828
+32
+1.1798646699340118
+13
+0.7589811239628956
+23
+-0.07796090531019828
+33
+1.1798646699340118
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.29329461801529333
+20
+-0.39135639924089705
+30
+1.3635807211619237
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.6437434044296662
+22
+-0.09951752352774346
+32
+1.0897797118446357
+13
+0.6437434044296662
+23
+-0.09951752352774346
+33
+1.0897797118446357
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.1068452790069585
+20
+-0.3913563992408881
+30
+1.1069552218670458
+11
+0.4203314900532422
+21
+-0.08234123267425719
+31
+0.7240449027265381
+12
+0.45563534442351883
+22
+-0.09635017693496095
+32
+0.8188769122878267
+13
+0.45563534442351883
+23
+-0.09635017693496095
+33
+0.8188769122878267
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.634839673189293
+20
+0.05269022449133848
+30
+1.7186951844850438
+11
+1.6208444899815906
+21
+0.07494508113197806
+31
+1.667507102739093
+12
+1.6675651975985641
+22
+0.05980434249020211
+32
+1.716859107888579
+13
+1.6675651975985641
+23
+0.05980434249020211
+33
+1.716859107888579
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.6903109494372404
+20
+-0.09112388712480801
+30
+1.1269513721715114
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7535113909177122
+22
+-0.07968804570622262
+32
+1.177433109344653
+13
+0.7535113909177122
+23
+-0.07968804570622262
+33
+1.177433109344653
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7556951133309526
+20
+-0.07922417161832584
+30
+1.1782818075904975
+11
+0.6903109494372404
+21
+-0.09112388712480801
+31
+1.1269513721715114
+12
+0.7589811239628956
+22
+-0.07796090531019828
+32
+1.1798646699340118
+13
+0.7589811239628956
+23
+-0.07796090531019828
+33
+1.1798646699340118
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.7556951133309526
+20
+-0.07922417161832584
+30
+1.1782818075904975
+11
+0.7589811239628956
+21
+-0.07796090531019828
+31
+1.1798646699340118
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.8081372379406215
+20
+-0.33429615364499293
+30
+2.5767480636693016
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.7773408938440884
+22
+-0.37681546288299567
+32
+2.578475898841768
+13
+1.7773408938440884
+23
+-0.37681546288299567
+33
+2.578475898841768
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8676957602144741
+20
+-0.07591452217505529
+30
+2.573406522256996
+11
+1.8549083584093868
+21
+-0.17853836535603948
+31
+2.5741239612554403
+12
+1.8393533418547328
+22
+-0.12422716055224386
+32
+2.4372046572449104
+13
+1.8393533418547328
+23
+-0.12422716055224386
+33
+2.4372046572449104
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8720848207106824
+20
+0.03421035611087325
+30
+2.573160274089795
+11
+1.8676957602144741
+21
+-0.07591452217505529
+31
+2.573406522256996
+12
+1.8521407436598245
+22
+-0.030932757660463273
+32
+2.436487218246467
+13
+1.8521407436598245
+23
+-0.030932757660463273
+33
+2.436487218246467
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8565298041560327
+20
+0.06918076805400641
+30
+2.4362409700792664
+11
+1.8720848207106824
+21
+0.03421035611087325
+31
+2.573160274089795
+12
+1.8521407436598245
+22
+-0.030932757660463273
+32
+2.436487218246467
+13
+1.8521407436598245
+23
+-0.030932757660463273
+33
+2.436487218246467
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7451326621638448
+20
+0.15688264207656666
+30
+1.71250717030225
+11
+1.8190390390415143
+21
+-0.20434458124056845
+31
+2.4383443947924617
+12
+1.7248183593506174
+22
+0.11373378942971202
+32
+1.7136469078498038
+13
+1.7248183593506174
+23
+0.11373378942971202
+33
+1.7136469078498038
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8621334256349
+20
+-0.2652554966498969
+30
+2.8176724354804583
+11
+1.8356766079793665
+21
+-0.3336560344194598
+31
+2.8191568003467666
+12
+1.834594055596155
+22
+-0.2666675281131681
+32
+2.575263698802992
+13
+1.834594055596155
+23
+-0.2666675281131681
+33
+2.575263698802992
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.834594055596155
+20
+-0.2666675281131681
+30
+2.575263698802992
+11
+1.8356766079793665
+21
+-0.3336560344194598
+31
+2.8191568003467666
+12
+1.8081372379406215
+22
+-0.33429615364499293
+32
+2.5767480636693016
+13
+1.8081372379406215
+23
+-0.33429615364499293
+33
+2.5767480636693016
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8623538269052708
+20
+0.34333572521797184
+30
+2.817660075416184
+11
+1.8826035756809005
+21
+0.2542185511592471
+31
+2.8165239580476373
+12
+1.8348144568665077
+22
+0.3350556335425835
+32
+2.575251338738716
+13
+1.8348144568665077
+23
+0.3350556335425835
+33
+2.575251338738716
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8359465433048274
+20
+0.4117129433371637
+30
+2.8191416624214285
+11
+1.8623538269052708
+21
+0.34333572521797184
+31
+2.817660075416184
+12
+1.8084071732660914
+22
+0.4026612025904063
+32
+2.576732925743964
+13
+1.8084071732660914
+23
+0.4026612025904063
+33
+2.576732925743964
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.805181337617048
+20
+0.4546904111007235
+30
+2.820867751357442
+11
+1.8359465433048274
+21
+0.4117129433371637
+31
+2.8191416624214285
+12
+1.7776419675782986
+22
+0.44515366198423323
+32
+2.578459014679979
+13
+1.7776419675782986
+23
+0.44515366198423323
+33
+2.578459014679979
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.882447728448143
+20
+-0.1761204287941148
+30
+2.8165326979329053
+11
+1.8621334256349
+21
+-0.2652554966498969
+31
+2.8176724354804583
+12
+1.8549083584093868
+22
+-0.17853836535603948
+32
+2.5741239612554403
+13
+1.8549083584093868
+23
+-0.17853836535603948
+33
+2.5741239612554403
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8522214161237673
+20
+0.16929084525907834
+30
+2.4364826941489497
+11
+1.867776432678417
+21
+0.1443314410364377
+31
+2.5734019981594765
+12
+1.8565298041560327
+22
+0.06918076805400641
+32
+2.4362409700792664
+13
+1.8565298041560327
+23
+0.06918076805400641
+33
+2.4362409700792664
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7248183593506174
+20
+0.11373378942971202
+30
+1.7136469078498038
+11
+1.8190390390415143
+21
+-0.20434458124056845
+31
+2.4383443947924617
+12
+1.792582221385972
+22
+-0.26582514990585526
+32
+2.4398287596587718
+13
+1.792582221385972
+23
+-0.26582514990585526
+33
+2.4398287596587718
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.867776432678417
+20
+0.1443314410364377
+30
+2.5734019981594765
+11
+1.8720848207106824
+21
+0.03421035611087325
+31
+2.573160274089795
+12
+1.8565298041560327
+22
+0.06918076805400641
+32
+2.4362409700792664
+13
+1.8565298041560327
+23
+0.06918076805400641
+33
+2.4362409700792664
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7776419675782986
+20
+0.44515366198423323
+30
+2.578459014679979
+11
+1.8359465433048274
+21
+0.4117129433371637
+31
+2.8191416624214285
+12
+1.8084071732660914
+22
+0.4026612025904063
+32
+2.576732925743964
+13
+1.8084071732660914
+23
+0.4026612025904063
+33
+2.576732925743964
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8084071732660914
+20
+0.4026612025904063
+30
+2.576732925743964
+11
+1.8623538269052708
+21
+0.34333572521797184
+31
+2.817660075416184
+12
+1.8348144568665077
+22
+0.3350556335425835
+32
+2.575251338738716
+13
+1.8348144568665077
+23
+0.3350556335425835
+33
+2.575251338738716
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8549083584093868
+20
+-0.17853836535603948
+30
+2.5741239612554403
+11
+1.8621334256349
+21
+-0.2652554966498969
+31
+2.8176724354804583
+12
+1.834594055596155
+22
+-0.2666675281131681
+32
+2.575263698802992
+13
+1.834594055596155
+23
+-0.2666675281131681
+33
+2.575263698802992
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8348144568665077
+20
+0.3350556335425835
+30
+2.575251338738716
+11
+1.8826035756809005
+21
+0.2542185511592471
+31
+2.8165239580476373
+12
+1.8550642056421511
+22
+0.24694416264779395
+32
+2.57411522137017
+13
+1.8550642056421511
+23
+0.24694416264779395
+33
+2.57411522137017
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8356766079793665
+20
+-0.3336560344194598
+30
+2.8191568003467666
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.8081372379406215
+22
+-0.33429615364499293
+32
+2.5767480636693016
+13
+1.8081372379406215
+23
+-0.33429615364499293
+33
+2.5767480636693016
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.02045058279261691
+20
+-0.39135639924089705
+30
+0.9739190561071899
+11
+0.3817497804163781
+21
+-0.05607568881768277
+31
+0.5821837592203328
+12
+0.3966753060057868
+22
+-0.07337409647306103
+32
+0.659508580082581
+13
+0.3966753060057868
+23
+-0.07337409647306103
+33
+0.659508580082581
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.1068452790069585
+20
+-0.3913563992408881
+30
+1.1069552218670458
+11
+0.45563534442351883
+21
+-0.09635017693496095
+31
+0.8188769122878267
+12
+0.47725266850529624
+22
+-0.09848891117181602
+32
+0.8571105745168952
+13
+0.47725266850529624
+23
+-0.09848891117181602
+33
+0.8571105745168952
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.6437434044296662
+21
+-0.09951752352774346
+31
+1.0897797118446357
+12
+0.6454971629912596
+22
+-0.09918946164044506
+32
+1.0911506801973632
+13
+0.6454971629912596
+23
+-0.09918946164044506
+33
+1.0911506801973632
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.29329461801529333
+20
+-0.39135639924089705
+30
+1.3635807211619237
+11
+0.5513988760171851
+21
+-0.10471927211351728
+31
+0.9800110958759284
+12
+0.5551727011859529
+22
+-0.10458326330281831
+32
+0.9844541997546986
+13
+0.5551727011859529
+23
+-0.10458326330281831
+33
+0.9844541997546986
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.6738975482255489
+21
+-0.09407408897106695
+31
+1.113848945264622
+12
+0.6903109494372404
+22
+-0.09112388712480801
+32
+1.1269513721715114
+13
+0.6903109494372404
+23
+-0.09112388712480801
+33
+1.1269513721715114
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7776419675782986
+20
+0.44515366198423323
+30
+2.578459014679979
+11
+1.8084071732660914
+21
+0.4026612025904063
+31
+2.576732925743964
+12
+1.7928521567114306
+22
+0.40413608303543147
+32
+2.439813621733438
+13
+1.7928521567114306
+23
+0.40413608303543147
+33
+2.439813621733438
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.762086951023649
+20
+0.4427655915752502
+30
+2.4415397106694483
+11
+1.6678662713327677
+21
+0.4622480233280828
+31
+1.7168422237267897
+12
+1.6348397414833575
+22
+0.4693393076118373
+32
+1.7186951844850427
+13
+1.6348397414833575
+23
+0.4693393076118373
+33
+1.7186951844850427
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7045232859296717
+20
+0.38133522453188085
+30
+1.563397323933316
+11
+1.7172355129659331
+21
+0.3386311081408655
+31
+1.5626841007226204
+12
+1.2712475811496826
+22
+0.3809548188019898
+32
+-0.021329497427587985
+13
+1.2712475811496826
+23
+0.3809548188019898
+33
+-0.021329497427587985
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7215439009982167
+20
+0.29280225228437573
+30
+1.5624423766529374
+11
+1.7171548405019925
+21
+0.24697181775326893
+31
+1.562688624820141
+12
+1.2841162643931592
+22
+0.24722978915362082
+32
+-0.021329497427588023
+13
+1.2841162643931592
+23
+0.24722978915362082
+33
+-0.021329497427588023
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7617858772894388
+20
+-0.30447906739496566
+30
+2.441556594831235
+11
+1.8081372379406215
+21
+-0.33429615364499293
+31
+2.5767480636693016
+12
+1.7773408938440884
+22
+-0.37681546288299567
+32
+2.578475898841768
+13
+1.7773408938440884
+23
+-0.37681546288299567
+33
+2.578475898841768
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8192594403118558
+20
+0.3426764748101059
+30
+2.438332034728192
+11
+1.8348144568665077
+21
+0.3350556335425835
+31
+2.575251338738716
+12
+1.8395091890875015
+22
+0.262575137633017
+32
+2.437195917359645
+13
+1.8395091890875015
+23
+0.262575137633017
+33
+2.437195917359645
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.72503876062097
+20
+0.4083430109881152
+30
+1.7136345477855313
+11
+1.8395091890875015
+21
+0.262575137633017
+31
+2.437195917359645
+12
+1.745288509396618
+22
+0.3652028204405948
+32
+1.7124984304169848
+13
+1.745288509396618
+23
+0.3652028204405948
+33
+1.7124984304169848
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6348397414833575
+20
+0.4693393076118373
+30
+1.7186951844850427
+11
+1.6678662713327677
+21
+0.4622480233280828
+31
+1.7168422237267897
+12
+1.5940745180163998
+22
+0.4698512386274375
+32
+1.569594078001374
+13
+1.5940745180163998
+23
+0.4698512386274375
+33
+1.569594078001374
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7290602943681443
+20
+-0.3176883359983307
+30
+2.443392671427686
+11
+1.634839673189293
+21
+0.05269022449133848
+31
+1.7186951844850438
+12
+1.6675651975985641
+22
+0.05980434249020211
+32
+1.716859107888579
+13
+1.6675651975985641
+23
+0.05980434249020211
+33
+1.716859107888579
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7579200639689365
+20
+0.20712822423046562
+30
+1.7117897313038086
+11
+1.8393533418547328
+21
+-0.12422716055224386
+31
+2.4372046572449104
+12
+1.7451326621638448
+22
+0.15688264207656666
+32
+1.71250717030225
+13
+1.7451326621638448
+23
+0.15688264207656666
+33
+1.71250717030225
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7776419675782986
+20
+0.44515366198423323
+30
+2.578459014679979
+11
+1.7928521567114306
+21
+0.40413608303543147
+31
+2.439813621733438
+12
+1.762086951023649
+22
+0.4427655915752502
+32
+2.4415397106694483
+13
+1.762086951023649
+23
+0.4427655915752502
+33
+2.4415397106694483
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.3505091197150552
+20
+0.11569951797502342
+30
+1.3688012067183613
+11
+0.7175412590885892
+21
+-0.3913563992408904
+31
+1.8347543501121704
+12
+1.2542185240067691
+22
+0.11569951797501443
+32
+1.2790087735671853
+13
+1.2542185240067691
+23
+0.11569951797501443
+33
+1.2790087735671853
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7175412590885892
+20
+-0.3913563992408904
+30
+1.8347543501121704
+11
+1.3505091197150552
+21
+0.11569951797502342
+31
+1.3688012067183613
+12
+0.8335540250022027
+22
+-0.39135639924089705
+32
+1.9429380045111706
+13
+0.8335540250022027
+23
+-0.39135639924089705
+33
+1.9429380045111706
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7623091244651496
+20
+0.26104638250238477
+30
+1.7115434831366068
+11
+1.8521407436598245
+21
+-0.030932757660463273
+31
+2.436487218246467
+12
+1.7579200639689365
+22
+0.20712822423046562
+32
+1.7117897313038086
+13
+1.7579200639689365
+23
+0.20712822423046562
+33
+1.7117897313038086
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.72503876062097
+20
+0.4083430109881152
+30
+1.7136345477855313
+11
+1.8192594403118558
+21
+0.3426764748101059
+31
+2.438332034728192
+12
+1.8395091890875015
+22
+0.262575137633017
+32
+2.437195917359645
+13
+1.8395091890875015
+23
+0.262575137633017
+33
+2.437195917359645
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6271010478658303
+20
+0.4638236469862328
+30
+1.567741117243121
+11
+1.6578662535535986
+21
+0.4461396512477167
+31
+1.566015028307111
+12
+1.2238034110911722
+22
+0.4454575748968931
+32
+-0.021329497427587968
+13
+1.2238034110911722
+23
+0.4454575748968931
+33
+-0.021329497427587968
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7171548405019925
+20
+0.24697181775326893
+30
+1.562688624820141
+11
+1.7579200639689365
+21
+0.20712822423046562
+31
+1.7117897313038086
+12
+1.7043674386969119
+22
+0.20426307292245227
+32
+1.5634060638185832
+13
+1.7043674386969119
+23
+0.20426307292245227
+33
+1.5634060638185832
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7043674386969119
+20
+0.20426307292245227
+30
+1.5634060638185832
+11
+1.6840531358836734
+21
+0.16758654817261043
+31
+1.564545801366135
+12
+1.2504634291176997
+22
+0.16751202849710456
+32
+-0.02132949742758803
+13
+1.2504634291176997
+23
+0.16751202849710456
+33
+-0.02132949742758803
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7290604211742295
+20
+0.45593246326086423
+30
+2.4433926714277017
+11
+1.762086951023649
+21
+0.4427655915752502
+31
+2.4415397106694483
+12
+1.6348397414833575
+22
+0.4693393076118373
+32
+1.7186951844850427
+13
+1.6348397414833575
+23
+0.4693393076118373
+33
+1.7186951844850427
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6575963182281532
+20
+0.13944168805466128
+30
+1.566030166232445
+11
+1.7248183593506174
+21
+0.11373378942971202
+31
+1.7136469078498038
+12
+1.6983615416950928
+22
+0.08062218929093451
+32
+1.715131272716112
+13
+1.6983615416950928
+23
+0.08062218929093451
+33
+1.715131272716112
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7045232859296717
+20
+0.38133522453188085
+30
+1.563397323933316
+11
+1.745288509396618
+21
+0.3652028204405948
+31
+1.7124984304169848
+12
+1.7580007364328771
+22
+0.3149626835100081
+32
+1.7117852072062885
+13
+1.7580007364328771
+23
+0.3149626835100081
+33
+1.7117852072062885
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6267999741316135
+20
+0.12174651827402361
+30
+1.5677580014049102
+11
+1.2236774151144043
+21
+0.13952109683086134
+31
+-0.021329497427588037
+12
+1.6575963182281532
+22
+0.13944168805466128
+32
+1.566030166232445
+13
+1.6575963182281532
+23
+0.13944168805466128
+33
+1.566030166232445
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7045232859296717
+20
+0.38133522453188085
+30
+1.563397323933316
+11
+1.7580007364328771
+21
+0.3149626835100081
+31
+1.7117852072062885
+12
+1.7172355129659331
+22
+0.3386311081408655
+32
+1.5626841007226204
+13
+1.7172355129659331
+23
+0.3386311081408655
+33
+1.5626841007226204
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6842735371540238
+20
+0.4180043864972566
+30
+1.5645334413018623
+11
+1.7045232859296717
+21
+0.38133522453188085
+31
+1.563397323933316
+12
+1.2507989254112186
+22
+0.4173719437487061
+32
+-0.021329497427587975
+13
+1.2507989254112186
+23
+0.4173719437487061
+33
+-0.021329497427587975
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7043674386969119
+20
+0.20426307292245227
+30
+1.5634060638185832
+11
+1.7451326621638448
+21
+0.15688264207656666
+31
+1.71250717030225
+12
+1.6840531358836734
+22
+0.16758654817261043
+32
+1.564545801366135
+13
+1.6840531358836734
+23
+0.16758654817261043
+33
+1.564545801366135
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7172355129659331
+20
+0.3386311081408655
+30
+1.5626841007226204
+11
+1.7215439009982167
+21
+0.29280225228437573
+31
+1.5624423766529374
+12
+1.2841736058160016
+22
+0.3381150408717304
+32
+-0.021329497427588
+13
+1.2841736058160016
+23
+0.3381150408717304
+33
+-0.021329497427588
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7579200639689365
+20
+0.20712822423046562
+30
+1.7117897313038086
+11
+1.7451326621638448
+21
+0.15688264207656666
+31
+1.71250717030225
+12
+1.7043674386969119
+22
+0.20426307292245227
+32
+1.5634060638185832
+13
+1.7043674386969119
+23
+0.20426307292245227
+33
+1.5634060638185832
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8395091890875015
+20
+0.262575137633017
+30
+2.437195917359645
+11
+1.8550642056421511
+21
+0.24694416264779395
+31
+2.57411522137017
+12
+1.8522214161237673
+22
+0.16929084525907834
+32
+2.4364826941489497
+13
+1.8522214161237673
+23
+0.16929084525907834
+33
+2.4364826941489497
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8348144568665077
+20
+0.3350556335425835
+30
+2.575251338738716
+11
+1.8550642056421511
+21
+0.24694416264779395
+31
+2.57411522137017
+12
+1.8395091890875015
+22
+0.262575137633017
+32
+2.437195917359645
+13
+1.8395091890875015
+23
+0.262575137633017
+33
+2.437195917359645
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7172355129659331
+20
+0.3386311081408655
+30
+1.5626841007226204
+11
+1.7580007364328771
+21
+0.3149626835100081
+31
+1.7117852072062885
+12
+1.7215439009982167
+22
+0.29280225228437573
+32
+1.5624423766529374
+13
+1.7215439009982167
+23
+0.29280225228437573
+33
+1.5624423766529374
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6578662535535986
+20
+0.4461396512477167
+30
+1.566015028307111
+11
+1.698631477020556
+21
+0.4414433224592369
+31
+1.715116134790779
+12
+1.72503876062097
+22
+0.4083430109881152
+32
+1.7136345477855313
+13
+1.72503876062097
+23
+0.4083430109881152
+33
+1.7136345477855313
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8084071732660914
+20
+0.4026612025904063
+30
+2.576732925743964
+11
+1.8348144568665077
+21
+0.3350556335425835
+31
+2.575251338738716
+12
+1.8192594403118558
+22
+0.3426764748101059
+32
+2.438332034728192
+13
+1.8192594403118558
+23
+0.3426764748101059
+33
+2.438332034728192
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7215439009982167
+20
+0.29280225228437573
+30
+1.5624423766529374
+11
+1.7623091244651496
+21
+0.26104638250238477
+31
+1.7115434831366068
+12
+1.7579200639689365
+22
+0.20712822423046562
+32
+1.7117897313038086
+13
+1.7579200639689365
+23
+0.20712822423046562
+33
+1.7117897313038086
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7579200639689365
+20
+0.20712822423046562
+30
+1.7117897313038086
+11
+1.8521407436598245
+21
+-0.030932757660463273
+31
+2.436487218246467
+12
+1.8393533418547328
+22
+-0.12422716055224386
+32
+2.4372046572449104
+13
+1.8393533418547328
+23
+-0.12422716055224386
+33
+2.4372046572449104
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6840531358836734
+20
+0.16758654817261043
+30
+1.564545801366135
+11
+1.7451326621638448
+21
+0.15688264207656666
+31
+1.71250717030225
+12
+1.7248183593506174
+22
+0.11373378942971202
+32
+1.7136469078498038
+13
+1.7248183593506174
+23
+0.11373378942971202
+33
+1.7136469078498038
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7446152966499613
+20
+-0.3913456583466878
+30
+2.580311975438275
+11
+1.7437745197997272
+21
+-0.3873643428597891
+31
+2.572911231993639
+12
+1.7409189549547188
+22
+-0.39135639924089705
+32
+2.578281768371061
+13
+1.7409189549547188
+23
+-0.39135639924089705
+33
+2.578281768371061
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7215439009982167
+20
+0.29280225228437573
+30
+1.5624423766529374
+11
+1.7579200639689365
+21
+0.20712822423046562
+31
+1.7117897313038086
+12
+1.7171548405019925
+22
+0.24697181775326893
+32
+1.562688624820141
+13
+1.7171548405019925
+23
+0.24697181775326893
+33
+1.562688624820141
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.762086951023649
+20
+0.4427655915752502
+30
+2.4415397106694483
+11
+1.698631477020556
+21
+0.4414433224592369
+31
+1.715116134790779
+12
+1.6678662713327677
+22
+0.4622480233280828
+32
+1.7168422237267897
+13
+1.6678662713327677
+23
+0.4622480233280828
+33
+1.7168422237267897
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8549083584093868
+20
+-0.17853836535603948
+30
+2.5741239612554403
+11
+1.834594055596155
+21
+-0.2666675281131681
+31
+2.575263698802992
+12
+1.8190390390415143
+22
+-0.20434458124056845
+32
+2.4383443947924617
+13
+1.8190390390415143
+23
+-0.20434458124056845
+33
+2.4383443947924617
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7446152966499613
+20
+-0.3913456583466878
+30
+2.580311975438275
+11
+1.7617858772894388
+21
+-0.30447906739496566
+31
+2.441556594831235
+12
+1.7773408938440884
+22
+-0.37681546288299567
+32
+2.578475898841768
+13
+1.7773408938440884
+23
+-0.37681546288299567
+33
+2.578475898841768
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7580007364328771
+20
+0.3149626835100081
+30
+1.7117852072062885
+11
+1.8565298041560327
+21
+0.06918076805400641
+31
+2.4362409700792664
+12
+1.7623091244651496
+22
+0.26104638250238477
+32
+1.7115434831366068
+13
+1.7623091244651496
+23
+0.26104638250238477
+33
+1.7115434831366068
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6678662713327677
+20
+0.4622480233280828
+30
+1.7168422237267897
+11
+1.6578662535535986
+21
+0.4461396512477167
+31
+1.566015028307111
+12
+1.6271010478658303
+22
+0.4638236469862328
+32
+1.567741117243121
+13
+1.6271010478658303
+23
+0.4638236469862328
+33
+1.567741117243121
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7580007364328771
+20
+0.3149626835100081
+30
+1.7117852072062885
+11
+1.7623091244651496
+21
+0.26104638250238477
+31
+1.7115434831366068
+12
+1.7215439009982167
+22
+0.29280225228437573
+32
+1.5624423766529374
+13
+1.7215439009982167
+23
+0.29280225228437573
+33
+1.5624423766529374
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6840531358836734
+20
+0.16758654817261043
+30
+1.564545801366135
+11
+1.7248183593506174
+21
+0.11373378942971202
+31
+1.7136469078498038
+12
+1.6575963182281532
+22
+0.13944168805466128
+32
+1.566030166232445
+13
+1.6575963182281532
+23
+0.13944168805466128
+33
+1.566030166232445
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7776419675782986
+20
+0.44515366198423323
+30
+2.578459014679979
+11
+1.762086951023649
+21
+0.4427655915752502
+31
+2.4415397106694483
+12
+1.7290604211742295
+22
+0.45593246326086423
+32
+2.4433926714277017
+13
+1.7290604211742295
+23
+0.45593246326086423
+33
+2.4433926714277017
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895715899620932
+20
+0.41891736303231675
+30
+2.7217694811906528
+11
+-1.7532287476248738
+21
+0.42997336695883304
+31
+2.1850363490651525
+12
+-1.3438353594874726
+22
+0.42997289595543453
+32
+2.3082689981735225
+13
+-1.3438353594874726
+23
+0.42997289595543453
+33
+2.3082689981735225
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6578662535535986
+20
+0.4461396512477167
+30
+1.566015028307111
+11
+1.6842735371540238
+21
+0.4180043864972566
+31
+1.5645334413018623
+12
+1.2238034110911722
+22
+0.4454575748968931
+32
+-0.021329497427587968
+13
+1.2238034110911722
+23
+0.4454575748968931
+33
+-0.021329497427587968
+70
+0
+ 0
+LINE
+ 8
+palm
+10
+1.7696706587222877
+20
+-0.35198670100650886
+30
+2.7811361899186524
+11
+1.7679994781424735
+21
+-0.3519867007325644
+31
+2.786145599142259
+ 0
+3DFACE
+ 8
+palm
+10
+1.745288509396618
+20
+0.3652028204405948
+30
+1.7124984304169848
+11
+1.8522214161237673
+21
+0.16929084525907834
+31
+2.4364826941489497
+12
+1.7580007364328771
+22
+0.3149626835100081
+32
+1.7117852072062885
+13
+1.7580007364328771
+23
+0.3149626835100081
+33
+1.7117852072062885
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.8042763848132697
+21
+0.4693392798390309
+31
+3.3604633371264394
+12
+1.8042763765484142
+22
+0.4189167739554035
+32
+3.3604633371264274
+13
+1.8042763765484142
+23
+0.4189167739554035
+33
+3.3604633371264274
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.8042763848132697
+20
+0.4693392798390309
+30
+3.3604633371264394
+11
+1.7721548011833212
+21
+0.429174626495198
+31
+2.82272071211574
+12
+1.7721548077676246
+22
+0.4693392851041711
+32
+2.8227207121156974
+13
+1.7721548077676246
+23
+0.4693392851041711
+33
+2.8227207121156974
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7446154379169838
+20
+0.46077168557314707
+30
+2.580311975438233
+11
+1.7776419675782986
+21
+0.44515366198423323
+31
+2.578459014679979
+12
+1.7290604211742295
+22
+0.45593246326086423
+32
+2.4433926714277017
+13
+1.7290604211742295
+23
+0.45593246326086423
+33
+2.4433926714277017
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.1922941387017831
+21
+0.12173074383943339
+31
+-0.021329497427588044
+12
+1.6267999741316135
+22
+0.12174651827402361
+32
+1.5677580014049102
+13
+1.6267999741316135
+23
+0.12174651827402361
+33
+1.5677580014049102
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026165657096
+20
+-0.3519866678686142
+30
+3.387140392775377
+11
+1.7721546731419455
+21
+-0.3519867014136748
+31
+2.8227207121156908
+12
+1.7679994781424735
+22
+-0.3519867007325644
+32
+2.786145599142259
+13
+1.7679994781424735
+23
+-0.3519867007325644
+33
+2.786145599142259
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721546731419455
+20
+-0.3519867014136748
+30
+2.8227207121156908
+11
+1.5675026165657096
+21
+-0.3519866678686142
+31
+3.387140392775377
+12
+1.7926934652283346
+22
+-0.3519867047802352
+32
+3.166557627574764
+13
+1.7926934652283346
+23
+-0.3519867047802352
+33
+3.166557627574764
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.8190390390415143
+20
+-0.20434458124056845
+30
+2.4383443947924617
+11
+1.834594055596155
+21
+-0.2666675281131681
+31
+2.575263698802992
+12
+1.792582221385972
+22
+-0.26582514990585526
+32
+2.4398287596587718
+13
+1.792582221385972
+23
+-0.26582514990585526
+33
+2.4398287596587718
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.698631477020556
+20
+0.4414433224592369
+30
+1.715116134790779
+11
+1.7928521567114306
+21
+0.40413608303543147
+31
+2.439813621733438
+12
+1.8192594403118558
+22
+0.3426764748101059
+32
+2.438332034728192
+13
+1.8192594403118558
+23
+0.3426764748101059
+33
+2.438332034728192
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.792582221385972
+20
+-0.26582514990585526
+30
+2.4398287596587718
+11
+1.834594055596155
+21
+-0.2666675281131681
+31
+2.575263698802992
+12
+1.8081372379406215
+22
+-0.33429615364499293
+32
+2.5767480636693016
+13
+1.8081372379406215
+23
+-0.33429615364499293
+33
+2.5767480636693016
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.49742734357691054
+20
+0.46933965711727876
+30
+3.460249444335772
+11
+-0.433275824211661
+21
+0.6693396466020395
+31
+2.4623092723969795
+12
+-1.4736623075547448
+22
+0.4693398171344658
+32
+3.1019128637859295
+13
+-1.4736623075547448
+23
+0.4693398171344658
+33
+3.1019128637859295
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001768207931099
+20
+0.41891698771371944
+30
+3.617705458439768
+11
+-0.49742734357691054
+21
+0.46933965711727876
+31
+3.460249444335772
+12
+-0.4974273518417929
+22
+0.41891715123359774
+32
+3.4602494443357763
+13
+-0.4974273518417929
+23
+0.41891715123359774
+33
+3.4602494443357763
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.49742734357691054
+20
+0.46933965711727876
+30
+3.460249444335772
+11
+0.5001768207931099
+21
+0.41891698771371944
+31
+3.617705458439768
+12
+0.0013747427405363943
+22
+0.46933957535736426
+32
+3.53897745138778
+13
+0.0013747427405363943
+23
+0.46933957535736426
+33
+3.53897745138778
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.0013747427405363943
+20
+0.46933957535736426
+30
+3.53897745138778
+11
+0.5001768207931099
+21
+0.41891698771371944
+31
+3.617705458439768
+12
+0.500176829057992
+22
+0.4693394935974071
+32
+3.6177054584397785
+13
+0.500176829057992
+23
+0.4693394935974071
+33
+3.6177054584397785
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.0013747427405363943
+20
+0.46933957535736426
+30
+3.53897745138778
+11
+0.005897113385843644
+21
+0.6693395746160492
+31
+2.540767132815593
+12
+-0.49742734357691054
+22
+0.46933965711727876
+32
+3.460249444335772
+13
+-0.49742734357691054
+23
+0.46933965711727876
+33
+3.460249444335772
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8042763765484142
+20
+0.4189167739554035
+30
+3.3604633371264274
+11
+1.567502748292268
+21
+0.4693393186492294
+31
+3.5817379898496267
+12
+1.5675027400274082
+22
+0.4189168127655707
+32
+3.5817379898496142
+13
+1.5675027400274082
+23
+0.4189168127655707
+33
+3.5817379898496142
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.567502748292268
+20
+0.4693393186492294
+30
+3.5817379898496267
+11
+1.8042763765484142
+21
+0.4189167739554035
+31
+3.3604633371264274
+12
+1.8042763848132697
+22
+0.4693392798390309
+32
+3.3604633371264394
+13
+1.8042763848132697
+23
+0.4693392798390309
+33
+3.3604633371264394
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7604022996639854
+20
+0.4693398641347575
+30
+2.906434883050858
+11
+-1.2344292513491493
+21
+0.5693397779211644
+31
+2.1309506849853554
+12
+-1.7895715816972064
+22
+0.4693398689159888
+32
+2.721769481190647
+13
+-1.7895715816972064
+23
+0.4693398689159888
+33
+2.721769481190647
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.500176829057992
+20
+0.4693394935974071
+30
+3.6177054584397785
+11
+1.567502748292268
+21
+0.4693393186492294
+31
+3.5817379898496267
+12
+0.4450700509834469
+22
+0.6693395026301509
+32
+2.619224993234204
+13
+0.4450700509834469
+23
+0.6693395026301509
+33
+2.619224993234204
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4974274817566946
+20
+-0.39135632940056486
+30
+3.2656518472615215
+11
+-1.4736624392813298
+21
+-0.3519861693833375
+31
+2.907315266711701
+12
+-1.4736624457345466
+22
+-0.3913561693833688
+32
+2.907315266711703
+13
+-1.4736624457345466
+23
+-0.3913561693833688
+33
+2.907315266711703
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736624392813298
+20
+-0.3519861693833375
+30
+2.907315266711701
+11
+-0.4974274817566946
+21
+-0.39135632940056486
+31
+3.2656518472615215
+12
+-0.497427475303424
+22
+-0.3519863294005559
+32
+3.2656518472615206
+13
+-0.497427475303424
+23
+-0.3519863294005559
+33
+3.2656518472615206
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5511466302233783
+20
+-0.35198650127506403
+30
+2.822685108166137
+11
+-0.4070164569928685
+21
+0.42997157245158046
+31
+2.665229116319892
+12
+-0.4070165851656482
+22
+-0.35198634422005987
+32
+2.665229116319886
+13
+-0.4070165851656482
+23
+-0.35198634422005987
+33
+2.665229116319886
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4070164569928685
+20
+0.42997157245158046
+30
+2.665229116319892
+11
+0.5511466302233783
+21
+-0.35198650127506403
+31
+2.822685108166137
+12
+0.5511467583958203
+22
+0.4299694852427818
+32
+2.8226851081661346
+13
+0.5511467583958203
+23
+0.4299694852427818
+33
+2.8226851081661346
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.792582221385972
+20
+-0.26582514990585526
+30
+2.4398287596587718
+11
+1.8081372379406215
+21
+-0.33429615364499293
+31
+2.5767480636693016
+12
+1.7617858772894388
+22
+-0.30447906739496566
+32
+2.441556594831235
+13
+1.7617858772894388
+23
+-0.30447906739496566
+33
+2.441556594831235
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7604023079288675
+20
+0.418917358251119
+30
+2.9064348830508573
+11
+-1.7895715899620932
+21
+0.41891736303231675
+31
+2.7217694811906528
+12
+-1.3438353594874726
+22
+0.42997289595543453
+32
+2.3082689981735225
+13
+-1.3438353594874726
+23
+0.42997289595543453
+33
+2.3082689981735225
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895715816972064
+20
+0.4693398689159888
+30
+2.721769481190647
+11
+-1.2344292513491493
+21
+0.5693397779211644
+31
+2.1309506849853554
+12
+-1.7191704438325688
+22
+0.4523487095976748
+32
+1.9757999849928511
+13
+-1.7191704438325688
+23
+0.4523487095976748
+33
+1.9757999849928511
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.7290604211742295
+21
+0.45593246326086423
+31
+2.4433926714277017
+12
+1.6348397414833575
+22
+0.4693393076118373
+32
+1.7186951844850427
+13
+1.6348397414833575
+23
+0.4693393076118373
+33
+1.7186951844850427
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736623075547448
+20
+0.4693398171344658
+30
+3.1019128637859295
+11
+-0.433275824211661
+21
+0.6693396466020395
+31
+2.4623092723969795
+12
+-1.2344292513491493
+22
+0.5693397779211644
+32
+2.1309506849853554
+13
+-1.2344292513491493
+23
+0.5693397779211644
+33
+2.1309506849853554
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.500176829057992
+20
+0.4693394935974071
+30
+3.6177054584397785
+11
+0.005897113385843644
+21
+0.6693395746160492
+31
+2.540767132815593
+12
+0.0013747427405363943
+22
+0.46933957535736426
+32
+3.53897745138778
+13
+0.0013747427405363943
+23
+0.46933957535736426
+33
+3.53897745138778
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736623158196023
+20
+0.41891731125080267
+30
+3.1019128637859286
+11
+-1.7604023079288675
+21
+0.418917358251119
+31
+2.9064348830508573
+12
+-1.3438353594874726
+22
+0.42997289595543453
+32
+2.3082689981735225
+13
+-1.3438353594874726
+23
+0.42997289595543453
+33
+2.3082689981735225
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736624392813298
+20
+-0.3519861693833375
+30
+2.907315266711701
+11
+-0.4070165851656482
+21
+-0.35198634422005987
+31
+2.665229116319886
+12
+-1.3438354876604606
+22
+-0.3519861906636493
+32
+2.3082689981735207
+13
+-1.3438354876604606
+23
+-0.3519861906636493
+33
+2.3082689981735207
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4070165851656482
+20
+-0.35198634422005987
+30
+2.665229116319886
+11
+-1.4736624392813298
+21
+-0.3519861693833375
+31
+2.907315266711701
+12
+-0.497427475303424
+22
+-0.3519863294005559
+32
+3.2656518472615206
+13
+-0.497427475303424
+23
+-0.3519863294005559
+33
+3.2656518472615206
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.49742734357691054
+20
+0.46933965711727876
+30
+3.460249444335772
+11
+0.005897113385843644
+21
+0.6693395746160492
+31
+2.540767132815593
+12
+-0.433275824211661
+22
+0.6693396466020395
+32
+2.4623092723969795
+13
+-0.433275824211661
+23
+0.6693396466020395
+33
+2.4623092723969795
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.47725266850529624
+20
+-0.09848891117181602
+30
+0.8571105745168952
+11
+0.5928956312949423
+21
+-0.2929528290576049
+31
+0.9561792041941095
+12
+0.538904362268551
+22
+-0.10552659486033339
+32
+0.9648346235437796
+13
+0.538904362268551
+23
+-0.10552659486033339
+33
+0.9648346235437796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.497427475303424
+20
+-0.3519863294005559
+30
+3.2656518472615206
+11
+0.5511466302233783
+21
+-0.35198650127506403
+31
+2.822685108166137
+12
+-0.4070165851656482
+22
+-0.35198634422005987
+32
+2.665229116319886
+13
+-0.4070165851656482
+23
+-0.35198634422005987
+33
+2.665229116319886
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5511466302233783
+20
+-0.35198650127506403
+30
+2.822685108166137
+11
+-0.497427475303424
+21
+-0.3519863294005559
+31
+3.2656518472615206
+12
+0.5001766973314854
+22
+-0.351986492920461
+32
+3.4231078613655503
+13
+0.5001766973314854
+23
+-0.351986492920461
+33
+3.4231078613655503
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.772154666688709
+20
+-0.3913567014136412
+30
+2.822720712115689
+11
+1.7696706522690528
+21
+-0.39135670100649095
+31
+2.781136189918648
+12
+1.7446152966499613
+22
+-0.3913456583466878
+32
+2.580311975438275
+13
+1.7446152966499613
+23
+-0.3913456583466878
+33
+2.580311975438275
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7623091244651496
+20
+0.26104638250238477
+30
+1.7115434831366068
+11
+1.8565298041560327
+21
+0.06918076805400641
+31
+2.4362409700792664
+12
+1.8521407436598245
+22
+-0.030932757660463273
+32
+2.436487218246467
+13
+1.8521407436598245
+23
+-0.030932757660463273
+33
+2.436487218246467
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.567502748292268
+20
+0.4693393186492294
+30
+3.5817379898496267
+11
+1.2851012666870065
+21
+0.5693393649383878
+31
+2.603406296512527
+12
+0.4450700509834469
+22
+0.6693395026301509
+32
+2.619224993234204
+13
+0.4450700509834469
+23
+0.6693395026301509
+33
+2.619224993234204
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7926934587751069
+20
+-0.3913567047802016
+30
+3.1665576275747647
+11
+1.5675026165657096
+21
+-0.3519866678686142
+31
+3.387140392775377
+12
+1.5675026101124707
+22
+-0.39135666786861645
+32
+3.387140392775373
+13
+1.5675026101124707
+23
+-0.39135666786861645
+33
+3.387140392775373
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026165657096
+20
+-0.3519866678686142
+30
+3.387140392775377
+11
+1.7926934587751069
+21
+-0.3913567047802016
+31
+3.1665576275747647
+12
+1.7926934652283346
+22
+-0.3519867047802352
+32
+3.166557627574764
+13
+1.7926934652283346
+23
+-0.3519867047802352
+33
+3.166557627574764
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.500176829057992
+20
+0.4693394935974071
+30
+3.6177054584397785
+11
+0.4450700509834469
+21
+0.6693395026301509
+31
+2.619224993234204
+12
+0.005897113385843644
+22
+0.6693395746160492
+32
+2.540767132815593
+13
+0.005897113385843644
+23
+0.6693395746160492
+33
+2.540767132815593
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7532287476248738
+20
+0.42997336695883304
+30
+2.1850363490651525
+11
+-1.7895717163228786
+21
+-0.3519861176018548
+31
+2.721769481190651
+12
+-1.7532288757978818
+22
+-0.35198612355890113
+32
+2.1850363490651508
+13
+-1.7532288757978818
+23
+-0.35198612355890113
+33
+2.1850363490651508
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7895717163228786
+20
+-0.3519861176018548
+30
+2.721769481190651
+11
+-1.7532287476248738
+21
+0.42997336695883304
+31
+2.1850363490651525
+12
+-1.7895715899620932
+22
+0.41891736303231675
+32
+2.7217694811906528
+13
+-1.7895715899620932
+23
+0.41891736303231675
+33
+2.7217694811906528
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736623075547448
+20
+0.4693398171344658
+30
+3.1019128637859295
+11
+-1.2344292513491493
+21
+0.5693397779211644
+31
+2.1309506849853554
+12
+-1.7604022996639854
+22
+0.4693398641347575
+32
+2.906434883050858
+13
+-1.7604022996639854
+23
+0.4693398641347575
+33
+2.906434883050858
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7617858772894388
+20
+-0.30447906739496566
+30
+2.441556594831235
+11
+1.7437745197997272
+21
+-0.3873643428597891
+31
+2.572911231993639
+12
+1.7290602943681443
+22
+-0.3176883359983307
+32
+2.443392671427686
+13
+1.7290602943681443
+23
+-0.3176883359983307
+33
+2.443392671427686
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7437745197997272
+20
+-0.3873643428597891
+30
+2.572911231993639
+11
+1.7617858772894388
+21
+-0.30447906739496566
+31
+2.441556594831235
+12
+1.7446152966499613
+22
+-0.3913456583466878
+32
+2.580311975438275
+13
+1.7446152966499613
+23
+-0.3913456583466878
+33
+2.580311975438275
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.6840531358836734
+20
+0.16758654817261043
+30
+1.564545801366135
+11
+1.6575963182281532
+21
+0.13944168805466128
+31
+1.566030166232445
+12
+1.2236774151144043
+22
+0.13952109683086134
+32
+-0.021329497427588037
+13
+1.2236774151144043
+23
+0.13952109683086134
+33
+-0.021329497427588037
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.5675027400274082
+21
+0.4189168127655707
+31
+3.5817379898496142
+12
+1.7681256490688513
+22
+0.42988342156321946
+32
+2.787255060548812
+13
+1.7681256490688513
+23
+0.42988342156321946
+33
+2.787255060548812
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675027400274082
+20
+0.4189168127655707
+30
+3.5817379898496142
+11
+1.7721548011833212
+21
+0.429174626495198
+31
+2.82272071211574
+12
+1.8042763765484142
+22
+0.4189167739554035
+32
+3.3604633371264274
+13
+1.8042763765484142
+23
+0.4189167739554035
+33
+3.3604633371264274
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.567502748292268
+20
+0.4693393186492294
+30
+3.5817379898496267
+11
+1.8042763848132697
+21
+0.4693392798390309
+31
+3.3604633371264394
+12
+1.2851012666870065
+22
+0.5693393649383878
+32
+2.603406296512527
+13
+1.2851012666870065
+23
+0.5693393649383878
+33
+2.603406296512527
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6983615416950928
+20
+0.08062218929093451
+30
+1.715131272716112
+11
+1.6267999741316135
+21
+0.12174651827402361
+31
+1.5677580014049102
+12
+1.6575963182281532
+22
+0.13944168805466128
+32
+1.566030166232445
+13
+1.6575963182281532
+23
+0.13944168805466128
+33
+1.566030166232445
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4974273518417929
+20
+0.41891715123359774
+30
+3.4602494443357763
+11
+-1.4736623075547448
+21
+0.4693398171344658
+31
+3.1019128637859295
+12
+-1.4736623158196023
+22
+0.41891731125080267
+32
+3.1019128637859286
+13
+-1.4736623158196023
+23
+0.41891731125080267
+33
+3.1019128637859286
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736623075547448
+20
+0.4693398171344658
+30
+3.1019128637859295
+11
+-0.4974273518417929
+21
+0.41891715123359774
+31
+3.4602494443357763
+12
+-0.49742734357691054
+22
+0.46933965711727876
+32
+3.460249444335772
+13
+-0.49742734357691054
+23
+0.46933965711727876
+33
+3.460249444335772
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.745288509396618
+20
+0.3652028204405948
+30
+1.7124984304169848
+11
+1.8395091890875015
+21
+0.262575137633017
+31
+2.437195917359645
+12
+1.8522214161237673
+22
+0.16929084525907834
+32
+2.4364826941489497
+13
+1.8522214161237673
+23
+0.16929084525907834
+33
+2.4364826941489497
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6842735371540238
+20
+0.4180043864972566
+30
+1.5645334413018623
+11
+1.72503876062097
+21
+0.4083430109881152
+31
+1.7136345477855313
+12
+1.7045232859296717
+22
+0.38133522453188085
+32
+1.563397323933316
+13
+1.7045232859296717
+23
+0.38133522453188085
+33
+1.563397323933316
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4070165851656482
+20
+-0.35198634422005987
+30
+2.665229116319886
+11
+-1.3438353594874726
+21
+0.42997289595543453
+31
+2.3082689981735225
+12
+-1.3438354876604606
+22
+-0.3519861906636493
+32
+2.3082689981735207
+13
+-1.3438354876604606
+23
+-0.3519861906636493
+33
+2.3082689981735207
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.3438353594874726
+20
+0.42997289595543453
+30
+2.3082689981735225
+11
+-0.4070165851656482
+21
+-0.35198634422005987
+31
+2.665229116319886
+12
+-0.4070164569928685
+22
+0.42997157245158046
+32
+2.665229116319892
+13
+-0.4070164569928685
+23
+0.42997157245158046
+33
+2.665229116319892
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7928521567114306
+20
+0.40413608303543147
+30
+2.439813621733438
+11
+1.8084071732660914
+21
+0.4026612025904063
+31
+2.576732925743964
+12
+1.8192594403118558
+22
+0.3426764748101059
+32
+2.438332034728192
+13
+1.8192594403118558
+23
+0.3426764748101059
+33
+2.438332034728192
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6678662713327677
+20
+0.4622480233280828
+30
+1.7168422237267897
+11
+1.698631477020556
+21
+0.4414433224592369
+31
+1.715116134790779
+12
+1.6578662535535986
+22
+0.4461396512477167
+32
+1.566015028307111
+13
+1.6578662535535986
+23
+0.4461396512477167
+33
+1.566015028307111
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.497427475303424
+21
+-0.3519863294005559
+31
+3.2656518472615206
+12
+-0.4974274817566946
+22
+-0.39135632940056486
+32
+3.2656518472615215
+13
+-0.4974274817566946
+23
+-0.39135632940056486
+33
+3.2656518472615215
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.497427475303424
+20
+-0.3519863294005559
+30
+3.2656518472615206
+11
+0.5001766908782079
+21
+-0.39135649292046104
+31
+3.4231078613655503
+12
+0.5001766973314854
+22
+-0.351986492920461
+32
+3.4231078613655503
+13
+0.5001766973314854
+23
+-0.351986492920461
+33
+3.4231078613655503
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.698631477020556
+20
+0.4414433224592369
+30
+1.715116134790779
+11
+1.8192594403118558
+21
+0.3426764748101059
+31
+2.438332034728192
+12
+1.72503876062097
+22
+0.4083430109881152
+32
+1.7136345477855313
+13
+1.72503876062097
+23
+0.4083430109881152
+33
+1.7136345477855313
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6267999741316135
+20
+0.12174651827402361
+30
+1.5677580014049102
+11
+1.1922941387017831
+21
+0.12173074383943339
+31
+-0.021329497427588044
+12
+1.2236774151144043
+22
+0.13952109683086134
+32
+-0.021329497427588037
+13
+1.2236774151144043
+23
+0.13952109683086134
+33
+-0.021329497427588037
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8550642056421511
+20
+0.24694416264779395
+30
+2.57411522137017
+11
+1.895315802717162
+21
+0.15043460930003982
+31
+2.8158107348369414
+12
+1.867776432678417
+22
+0.1443314410364377
+32
+2.5734019981594765
+13
+1.867776432678417
+23
+0.1443314410364377
+33
+2.5734019981594765
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.895315802717162
+20
+0.15043460930003982
+30
+2.8158107348369414
+11
+1.8550642056421511
+21
+0.24694416264779395
+31
+2.57411522137017
+12
+1.8826035756809005
+22
+0.2542185511592471
+32
+2.8165239580476373
+13
+1.8826035756809005
+23
+0.2542185511592471
+33
+2.8165239580476373
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.6678662713327677
+20
+0.4622480233280828
+30
+1.7168422237267897
+11
+1.6271010478658303
+21
+0.4638236469862328
+31
+1.567741117243121
+12
+1.5940745180163998
+22
+0.4698512386274375
+32
+1.569594078001374
+13
+1.5940745180163998
+23
+0.4698512386274375
+33
+1.569594078001374
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6675651975985641
+20
+0.05980434249020211
+30
+1.716859107888579
+11
+1.5940743769374797
+21
+0.11569951797502342
+31
+1.5695940780014193
+12
+1.6267999741316135
+22
+0.12174651827402361
+32
+1.5677580014049102
+13
+1.6267999741316135
+23
+0.12174651827402361
+33
+1.5677580014049102
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8393533418547328
+20
+-0.12422716055224386
+30
+2.4372046572449104
+11
+1.8549083584093868
+21
+-0.17853836535603948
+31
+2.5741239612554403
+12
+1.8190390390415143
+22
+-0.20434458124056845
+32
+2.4383443947924617
+13
+1.8190390390415143
+23
+-0.20434458124056845
+33
+2.4383443947924617
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7290602943681443
+20
+-0.3176883359983307
+30
+2.443392671427686
+11
+1.6675651975985641
+21
+0.05980434249020211
+31
+1.716859107888579
+12
+1.7617858772894388
+22
+-0.30447906739496566
+32
+2.441556594831235
+13
+1.7617858772894388
+23
+-0.30447906739496566
+33
+2.441556594831235
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.804880263882849
+20
+-0.37666065849100255
+30
+2.8208846355192323
+11
+1.7721546731419455
+21
+-0.3519867014136748
+31
+2.8227207121156908
+12
+1.772154666688709
+22
+-0.3913567014136412
+32
+2.822720712115689
+13
+1.772154666688709
+23
+-0.3913567014136412
+33
+2.822720712115689
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721546731419455
+20
+-0.3519867014136748
+30
+2.8227207121156908
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.7721548011833212
+22
+0.429174626495198
+32
+2.82272071211574
+13
+1.7721548011833212
+23
+0.429174626495198
+33
+2.82272071211574
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.7721548077676246
+22
+0.4693392851041711
+32
+2.8227207121156974
+13
+1.7721548077676246
+23
+0.4693392851041711
+33
+2.8227207121156974
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721548077676246
+20
+0.4693392851041711
+30
+2.8227207121156974
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.805181337617048
+22
+0.4546904111007235
+32
+2.820867751357442
+13
+1.805181337617048
+23
+0.4546904111007235
+33
+2.820867751357442
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.805181337617048
+20
+0.4546904111007235
+30
+2.820867751357442
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.8356766079793665
+22
+-0.3336560344194598
+32
+2.8191568003467666
+13
+1.8356766079793665
+23
+-0.3336560344194598
+33
+2.8191568003467666
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.805181337617048
+20
+0.4546904111007235
+30
+2.820867751357442
+11
+1.8356766079793665
+21
+-0.3336560344194598
+31
+2.8191568003467666
+12
+1.8359465433048274
+22
+0.4117129433371637
+32
+2.8191416624214285
+13
+1.8359465433048274
+23
+0.4117129433371637
+33
+2.8191416624214285
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.8359465433048274
+20
+0.4117129433371637
+30
+2.8191416624214285
+11
+1.8356766079793665
+21
+-0.3336560344194598
+31
+2.8191568003467666
+12
+1.8621334256349
+22
+-0.2652554966498969
+32
+2.8176724354804583
+13
+1.8621334256349
+23
+-0.2652554966498969
+33
+2.8176724354804583
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.8359465433048274
+20
+0.4117129433371637
+30
+2.8191416624214285
+11
+1.8621334256349
+21
+-0.2652554966498969
+31
+2.8176724354804583
+12
+1.8623538269052708
+22
+0.34333572521797184
+32
+2.817660075416184
+13
+1.8623538269052708
+23
+0.34333572521797184
+33
+2.817660075416184
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.8623538269052708
+20
+0.34333572521797184
+30
+2.817660075416184
+11
+1.8621334256349
+21
+-0.2652554966498969
+31
+2.8176724354804583
+12
+1.882447728448143
+22
+-0.1761204287941148
+32
+2.8165326979329053
+13
+1.882447728448143
+23
+-0.1761204287941148
+33
+2.8165326979329053
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.8623538269052708
+20
+0.34333572521797184
+30
+2.817660075416184
+11
+1.882447728448143
+21
+-0.1761204287941148
+31
+2.8165326979329053
+12
+1.8826035756809005
+22
+0.2542185511592471
+32
+2.8165239580476373
+13
+1.8826035756809005
+23
+0.2542185511592471
+33
+2.8165239580476373
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.8826035756809005
+20
+0.2542185511592471
+30
+2.8165239580476373
+11
+1.882447728448143
+21
+-0.1761204287941148
+31
+2.8165326979329053
+12
+1.895235130253219
+22
+-0.07232523842382649
+32
+2.815815258934461
+13
+1.895235130253219
+23
+-0.07232523842382649
+33
+2.815815258934461
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.8826035756809005
+20
+0.2542185511592471
+30
+2.8165239580476373
+11
+1.895235130253219
+21
+-0.07232523842382649
+31
+2.815815258934461
+12
+1.895315802717162
+22
+0.15043460930003982
+32
+2.8158107348369414
+13
+1.895315802717162
+23
+0.15043460930003982
+33
+2.8158107348369414
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.895315802717162
+20
+0.15043460930003982
+30
+2.8158107348369414
+11
+1.895235130253219
+21
+-0.07232523842382649
+31
+2.815815258934461
+12
+1.8996241907494322
+22
+0.03905660376695963
+32
+2.81556901076726
+13
+1.8996241907494322
+23
+0.03905660376695963
+33
+2.81556901076726
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.8521407436598245
+20
+-0.030932757660463273
+30
+2.436487218246467
+11
+1.8676957602144741
+21
+-0.07591452217505529
+31
+2.573406522256996
+12
+1.8393533418547328
+22
+-0.12422716055224386
+32
+2.4372046572449104
+13
+1.8393533418547328
+23
+-0.12422716055224386
+33
+2.4372046572449104
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7451326621638448
+20
+0.15688264207656666
+30
+1.71250717030225
+11
+1.8393533418547328
+21
+-0.12422716055224386
+31
+2.4372046572449104
+12
+1.8190390390415143
+22
+-0.20434458124056845
+32
+2.4383443947924617
+13
+1.8190390390415143
+23
+-0.20434458124056845
+33
+2.4383443947924617
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.72503876062097
+20
+0.4083430109881152
+30
+1.7136345477855313
+11
+1.745288509396618
+21
+0.3652028204405948
+31
+1.7124984304169848
+12
+1.7045232859296717
+22
+0.38133522453188085
+32
+1.563397323933316
+13
+1.7045232859296717
+23
+0.38133522453188085
+33
+1.563397323933316
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7248183593506174
+20
+0.11373378942971202
+30
+1.7136469078498038
+11
+1.792582221385972
+21
+-0.26582514990585526
+31
+2.4398287596587718
+12
+1.6983615416950928
+22
+0.08062218929093451
+32
+1.715131272716112
+13
+1.6983615416950928
+23
+0.08062218929093451
+33
+1.715131272716112
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6675651975985641
+20
+0.05980434249020211
+30
+1.716859107888579
+11
+1.6267999741316135
+21
+0.12174651827402361
+31
+1.5677580014049102
+12
+1.6983615416950928
+22
+0.08062218929093451
+32
+1.715131272716112
+13
+1.6983615416950928
+23
+0.08062218929093451
+33
+1.715131272716112
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.792582221385972
+20
+-0.26582514990585526
+30
+2.4398287596587718
+11
+1.6675651975985641
+21
+0.05980434249020211
+31
+1.716859107888579
+12
+1.6983615416950928
+22
+0.08062218929093451
+32
+1.715131272716112
+13
+1.6983615416950928
+23
+0.08062218929093451
+33
+1.715131272716112
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7580007364328771
+20
+0.3149626835100081
+30
+1.7117852072062885
+11
+1.8522214161237673
+21
+0.16929084525907834
+31
+2.4364826941489497
+12
+1.8565298041560327
+22
+0.06918076805400641
+32
+2.4362409700792664
+13
+1.8565298041560327
+23
+0.06918076805400641
+33
+2.4362409700792664
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7171548405019925
+20
+0.24697181775326893
+30
+1.562688624820141
+11
+1.7043674386969119
+21
+0.20426307292245227
+31
+1.5634060638185832
+12
+1.271159922480886
+22
+0.20436827456875706
+32
+-0.02132949742758802
+13
+1.271159922480886
+23
+0.20436827456875706
+33
+-0.02132949742758802
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940745180163998
+20
+0.4698512386274375
+30
+1.569594078001374
+11
+1.6271010478658303
+21
+0.4638236469862328
+31
+1.567741117243121
+12
+1.1923382645753737
+22
+0.4633074583588208
+32
+-0.021329497427587964
+13
+1.1923382645753737
+23
+0.4633074583588208
+33
+-0.021329497427587964
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.762086951023649
+20
+0.4427655915752502
+30
+2.4415397106694483
+11
+1.7928521567114306
+21
+0.40413608303543147
+31
+2.439813621733438
+12
+1.698631477020556
+22
+0.4414433224592369
+32
+1.715116134790779
+13
+1.698631477020556
+23
+0.4414433224592369
+33
+1.715116134790779
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6675651975985641
+20
+0.05980434249020211
+30
+1.716859107888579
+11
+1.792582221385972
+21
+-0.26582514990585526
+31
+2.4398287596587718
+12
+1.7617858772894388
+22
+-0.30447906739496566
+32
+2.441556594831235
+13
+1.7617858772894388
+23
+-0.30447906739496566
+33
+2.441556594831235
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.2841736058160016
+20
+0.3381150408717304
+30
+-0.021329497427588
+11
+1.7215439009982167
+21
+0.29280225228437573
+31
+1.5624423766529374
+12
+1.288529285669313
+22
+0.2925487173065494
+32
+-0.02132949742758801
+13
+1.288529285669313
+23
+0.2925487173065494
+33
+-0.02132949742758801
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.8550642056421511
+20
+0.24694416264779395
+30
+2.57411522137017
+11
+1.867776432678417
+21
+0.1443314410364377
+31
+2.5734019981594765
+12
+1.8522214161237673
+22
+0.16929084525907834
+32
+2.4364826941489497
+13
+1.8522214161237673
+23
+0.16929084525907834
+33
+2.4364826941489497
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6578662535535986
+20
+0.4461396512477167
+30
+1.566015028307111
+11
+1.72503876062097
+21
+0.4083430109881152
+31
+1.7136345477855313
+12
+1.6842735371540238
+22
+0.4180043864972566
+32
+1.5645334413018623
+13
+1.6842735371540238
+23
+0.4180043864972566
+33
+1.5645334413018623
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.7696706587222877
+21
+-0.35198670100650886
+31
+2.7811361899186524
+12
+1.7721546731419455
+22
+-0.3519867014136748
+32
+2.8227207121156908
+13
+1.7721546731419455
+23
+-0.3519867014136748
+33
+2.8227207121156908
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.7696706587222877
+20
+-0.35198670100650886
+30
+2.7811361899186524
+11
+1.7721548011833212
+21
+0.429174626495198
+31
+2.82272071211574
+12
+1.7696707868944743
+22
+0.4299678831142456
+32
+2.7811361899186586
+13
+1.7696707868944743
+23
+0.4299678831142456
+33
+2.7811361899186586
+70
+1
+ 0
+LINE
+ 8
+palm
+10
+-1.2436067112524003
+20
+0.2718065911365386
+30
+-0.029987259526271456
+11
+-1.2556460136349066
+21
+-0.07243340606868914
+31
+-0.02998725868702173
+ 0
+LINE
+ 8
+palm
+10
+-1.2436067112524003
+20
+0.2718065911365386
+30
+-0.029987259526271456
+11
+-1.2427484297297295
+21
+0.25543757582213467
+31
+-0.029987258687021207
+ 0
+LINE
+ 8
+palm
+10
+-1.2235069381440584
+20
+0.3503683787193038
+30
+-0.029987259376548173
+11
+-1.2427484297297295
+21
+-0.13681041743678712
+31
+-0.029987258687023982
+ 0
+LINE
+ 8
+palm
+10
+-1.222231336631785
+20
+0.35348859913790154
+30
+-0.02998725936704609
+11
+-1.222231336631785
+21
+0.3432508349117811
+31
+-0.029987258687021765
+ 0
+LINE
+ 8
+palm
+10
+-1.1969713685029186
+20
+0.41362328422976613
+30
+-0.029987259178884056
+11
+-1.222231336631785
+21
+-0.2653531336950365
+31
+-0.029987258687020638
+ 0
+LINE
+ 8
+palm
+10
+-1.195492940329603
+20
+0.415575439582175
+30
+-0.02998725916787122
+11
+-1.195492940329603
+21
+0.41164114523825557
+31
+-0.029987258687021765
+ 0
+LINE
+ 8
+palm
+10
+-1.165880854722602
+20
+0.454676014406754
+30
+-0.029987259207558653
+11
+-1.195492940329603
+21
+-0.3337434440215132
+31
+-0.02998725868702064
+ 0
+LINE
+ 8
+palm
+10
+-1.1643554183438858
+20
+0.45594782017314683
+30
+-0.029987258687021203
+11
+-1.1643554183438858
+21
+-0.3767353903721002
+31
+-0.029987258687024003
+ 0
+LINE
+ 8
+palm
+10
+-1.1628506272117831
+20
+0.455947742071513
+30
+-0.029987258924717694
+11
+-1.1309407413407597
+21
+-0.3913562255597655
+31
+-0.029987258687019288
+ 0
+LINE
+ 8
+palm
+10
+-1.1309407413407642
+20
+0.4692968438672974
+30
+-0.02998725868702286
+11
+-1.1309407413407597
+21
+-0.3913562255597655
+31
+-0.029987258687019288
+ 0
+LINE
+ 8
+palm
+10
+-0.4032641176830618
+20
+0.4693396416827257
+30
+-0.029987253266541992
+11
+-1.1309407413407597
+21
+-0.3913562255597655
+31
+-0.029987258687019288
+ 0
+LINE
+ 8
+palm
+10
+-0.37798921673072106
+20
+0.4693396375398492
+30
+-0.029987253078268685
+11
+-0.578414963340186
+21
+-0.3913991426505551
+31
+-0.029987258687020648
+ 0
+LINE
+ 8
+palm
+10
+-0.3181654135425569
+20
+0.469339627733974
+30
+-0.029987252632639818
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+ 0
+LINE
+ 8
+palm
+10
+0.0293145314722294
+20
+0.4693395707776401
+30
+-0.029987250044254076
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+ 0
+LINE
+ 8
+palm
+10
+0.3767943786960426
+20
+0.4693395138213242
+30
+-0.02998724745586906
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+ 0
+LINE
+ 8
+palm
+10
+0.3915316238299338
+20
+0.46933951140570074
+30
+-0.029987247346090977
+11
+0.3743671955219494
+21
+0.18194276692314504
+31
+-0.02998724746310961
+ 0
+LINE
+ 8
+palm
+10
+0.4066861946168403
+20
+0.4693395089216774
+30
+-0.029987247233204176
+11
+0.506526774807132
+21
+0.1156567745653565
+31
+-0.029987258687019527
+ 0
+LINE
+ 8
+palm
+10
+1.084906037085234
+20
+0.4693394175246698
+30
+-0.030006963059664236
+11
+0.506526774807132
+21
+0.1156567745653565
+31
+-0.029987258687019527
+ 0
+LINE
+ 8
+palm
+10
+1.084906037085234
+20
+0.4693394175246698
+30
+-0.030006963059664236
+11
+0.5115493143264411
+21
+0.1156567745653565
+31
+-0.030341524099559827
+ 0
+LINE
+ 8
+palm
+10
+1.1567373502034217
+20
+0.4692968438672974
+30
+-0.02998725868702286
+11
+1.1567374333163143
+21
+0.11569931667688083
+31
+-0.02998722460508882
+ 0
+LINE
+ 8
+palm
+10
+1.1864341863376306
+20
+0.46400963388634264
+30
+-0.029987241424839453
+11
+1.1567374333163143
+21
+0.11569931667688083
+31
+-0.02998722460508882
+ 0
+LINE
+ 8
+palm
+10
+1.1901520272065478
+20
+0.46327184729102877
+30
+-0.029987258687019527
+11
+1.1899268475563274
+21
+0.12173065789656323
+31
+-0.029987224110628933
+ 0
+LINE
+ 8
+palm
+10
+1.2177122174997808
+20
+0.44780696387981456
+30
+-0.029987241191849277
+11
+1.1899268475563274
+21
+0.12173065789656323
+31
+-0.029987224110628933
+ 0
+LINE
+ 8
+palm
+10
+1.2212895491922697
+20
+0.44560745112211575
+30
+-0.02998725868702176
+11
+1.2212895491922697
+21
+0.14066089589484243
+31
+-0.0299872586870184
+ 0
+LINE
+ 8
+palm
+10
+1.244617565209668
+20
+0.4214437739510256
+30
+-0.029987240991429867
+11
+1.2212895491922697
+21
+0.14066089589484243
+31
+-0.0299872586870184
+ 0
+LINE
+ 8
+palm
+10
+1.2480279454944514
+20
+0.41882218335197685
+30
+-0.029987258687019527
+11
+1.2480279454944514
+21
+0.1687608922492878
+31
+-0.02998725868702061
+ 0
+LINE
+ 8
+palm
+10
+1.2653645159926572
+20
+0.38721437027285777
+30
+-0.029987240836885698
+11
+1.2480279454944514
+21
+0.1687608922492878
+31
+-0.02998725868702061
+ 0
+LINE
+ 8
+palm
+10
+1.2685450385923984
+20
+0.3822015551261153
+30
+-0.029987258687019524
+11
+1.2685450385923984
+21
+0.20538152047514935
+31
+-0.029987258687019524
+ 0
+LINE
+ 8
+palm
+10
+1.2786478123579077
+20
+0.3485813374478923
+30
+-0.029987240737938237
+11
+1.2685450385923984
+21
+0.20538152047514935
+31
+-0.029987258687019524
+ 0
+LINE
+ 8
+palm
+10
+1.2818066242190442
+20
+0.3381122202086604
+30
+-0.02998722274179697
+11
+1.281442622497562
+21
+0.24802714527727066
+31
+-0.029987258687018955
+ 0
+LINE
+ 8
+palm
+10
+-1.2427484297297295
+20
+0.25543757582213467
+30
+-0.029987258687021207
+11
+-1.2427484297297295
+21
+-0.13681041743678712
+31
+-0.029987258687023982
+ 0
+LINE
+ 8
+palm
+10
+-1.222231336631785
+20
+0.3432508349117811
+30
+-0.029987258687021765
+11
+-1.222231336631785
+21
+-0.2653531336950365
+31
+-0.029987258687020638
+ 0
+LINE
+ 8
+palm
+10
+-1.195492940329603
+20
+0.41164114523825557
+30
+-0.029987258687021765
+11
+-1.195492940329603
+21
+-0.3337434440215132
+31
+-0.02998725868702064
+ 0
+LINE
+ 8
+palm
+10
+0.506526774807132
+20
+0.1156567745653565
+30
+-0.029987258687019527
+11
+0.7277978491178414
+21
+0.46933945628743545
+31
+-0.029987230995450295
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736624457345466
+20
+-0.3913561693833688
+30
+2.907315266711703
+11
+-1.7895717227761132
+21
+-0.3913561176018615
+31
+2.721769481190653
+12
+-1.7191705821264176
+22
+-0.3913561291414933
+32
+1.975799984992849
+13
+-1.7191705821264176
+23
+-0.3913561291414933
+33
+1.975799984992849
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736624457345466
+20
+-0.3913561693833688
+30
+2.907315266711703
+11
+-1.7191705821264176
+21
+-0.3913561291414933
+31
+1.975799984992849
+12
+-1.5933228224247524
+22
+-0.39135614976952593
+32
+1.4382238099822164
+13
+-1.5933228224247524
+23
+-0.39135614976952593
+33
+1.4382238099822164
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4974274817566946
+20
+-0.39135632940056486
+30
+3.2656518472615215
+11
+-0.583012265025729
+21
+-0.39135631537214516
+31
+-0.02132949742758821
+12
+-0.5782022063428369
+22
+-0.39139903017862127
+32
+-0.02132949742758821
+13
+-0.5782022063428369
+23
+-0.39139903017862127
+33
+-0.02132949742758821
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.44530211084188664
+21
+-0.39135639947577183
+31
+-0.02132949742758821
+12
+-0.39603457201367
+22
+-0.3913563992408881
+32
+0.11999794324711321
+13
+-0.39603457201367
+23
+-0.3913563992408881
+33
+0.11999794324711321
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.33918758135853855
+21
+-0.3913563992408814
+31
+0.26808941696355065
+12
+-0.27720690245551616
+22
+-0.3913563992408904
+32
+0.4141067459925812
+13
+-0.27720690245551616
+23
+-0.3913563992408904
+33
+0.4141067459925812
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.27720690245551616
+21
+-0.3913563992408904
+31
+0.4141067459925812
+12
+-0.21016804921447574
+22
+-0.39135639924089705
+32
+0.5578720307110291
+13
+-0.21016804921447574
+23
+-0.39135639924089705
+33
+0.5578720307110291
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.21016804921447574
+21
+-0.39135639924089705
+31
+0.5578720307110291
+12
+-0.13815269815152909
+22
+-0.39135639924089705
+32
+0.6992101152648077
+13
+-0.13815269815152909
+23
+-0.39135639924089705
+33
+0.6992101152648077
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.13815269815152909
+21
+-0.39135639924089705
+31
+0.6992101152648077
+12
+-0.06124858887884144
+22
+-0.39135639924089705
+32
+0.8379488009693535
+13
+-0.06124858887884144
+23
+-0.39135639924089705
+33
+0.8379488009693535
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.06124858887884144
+21
+-0.39135639924089705
+31
+0.8379488009693535
+12
+0.02045058279261691
+22
+-0.39135639924089705
+32
+0.9739190561071899
+13
+0.02045058279261691
+23
+-0.39135639924089705
+33
+0.9739190561071899
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.02045058279261691
+21
+-0.39135639924089705
+31
+0.9739190561071899
+12
+0.1068452790069585
+22
+-0.3913563992408881
+32
+1.1069552218670458
+13
+0.1068452790069585
+23
+-0.3913563992408881
+33
+1.1069552218670458
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.1068452790069585
+21
+-0.3913563992408881
+31
+1.1069552218670458
+12
+0.1978302411349111
+22
+-0.39135639924089705
+32
+1.2368952141735952
+13
+0.1978302411349111
+23
+-0.39135639924089705
+33
+1.2368952141735952
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.1978302411349111
+21
+-0.39135639924089705
+31
+1.2368952141735952
+12
+0.29329461801529333
+22
+-0.39135639924089705
+32
+1.3635807211619237
+13
+0.29329461801529333
+23
+-0.39135639924089705
+33
+1.3635807211619237
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.29329461801529333
+21
+-0.39135639924089705
+31
+1.3635807211619237
+12
+0.39312210101004275
+22
+-0.3913563992408881
+32
+1.4868573960561888
+13
+0.39312210101004275
+23
+-0.3913563992408881
+33
+1.4868573960561888
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.39312210101004275
+21
+-0.3913563992408881
+31
+1.4868573960561888
+12
+0.4971910657083536
+22
+-0.39135639924089705
+32
+1.606575045217334
+13
+0.4971910657083536
+23
+-0.39135639924089705
+33
+1.606575045217334
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.4971910657083536
+21
+-0.39135639924089705
+31
+1.606575045217334
+12
+0.6053747201073587
+22
+-0.3913563992408814
+32
+1.7225878111309507
+13
+0.6053747201073587
+23
+-0.3913563992408814
+33
+1.7225878111309507
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.6053747201073587
+21
+-0.3913563992408814
+31
+1.7225878111309507
+12
+1.5675026101124707
+22
+-0.39135666786861645
+32
+3.387140392775373
+13
+1.5675026101124707
+23
+-0.39135666786861645
+33
+3.387140392775373
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+0.6053747201073587
+21
+-0.3913563992408814
+31
+1.7225878111309507
+12
+0.7175412590885892
+22
+-0.3913563992408904
+32
+1.8347543501121704
+13
+0.7175412590885892
+23
+-0.3913563992408904
+33
+1.8347543501121704
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+0.7175412590885892
+21
+-0.3913563992408904
+31
+1.8347543501121704
+12
+0.8335540250022027
+22
+-0.39135639924089705
+32
+1.9429380045111706
+13
+0.8335540250022027
+23
+-0.39135639924089705
+33
+1.9429380045111706
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+0.8335540250022027
+21
+-0.39135639924089705
+31
+1.9429380045111706
+12
+0.9532716741633414
+22
+-0.39135639924089705
+32
+2.0470069692094945
+13
+0.9532716741633414
+23
+-0.39135639924089705
+33
+2.0470069692094945
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+0.9532716741633414
+21
+-0.39135639924089705
+31
+2.0470069692094945
+12
+1.076548349057601
+22
+-0.39135639924089705
+32
+2.146834452204238
+13
+1.076548349057601
+23
+-0.39135639924089705
+33
+2.146834452204238
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+1.076548349057601
+21
+-0.39135639924089705
+31
+2.146834452204238
+12
+1.2032338560459321
+22
+-0.39135639924089705
+32
+2.2422988290846195
+13
+1.2032338560459321
+23
+-0.39135639924089705
+33
+2.2422988290846195
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+1.2032338560459321
+21
+-0.39135639924089705
+31
+2.2422988290846195
+12
+1.3331738483524822
+22
+-0.39135639924089705
+32
+2.3332837912125775
+13
+1.3331738483524822
+23
+-0.39135639924089705
+33
+2.3332837912125775
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+1.3331738483524822
+21
+-0.39135639924089705
+31
+2.3332837912125775
+12
+1.4662100141123353
+22
+-0.39135639924083887
+32
+2.419678487426912
+13
+1.4662100141123353
+23
+-0.39135639924083887
+33
+2.419678487426912
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+1.4662100141123353
+21
+-0.39135639924083887
+31
+2.419678487426912
+12
+1.6021802692501754
+22
+-0.3913563992408456
+32
+2.5013776590983654
+13
+1.6021802692501754
+23
+-0.3913563992408456
+33
+2.5013776590983654
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+1.6021802692501754
+21
+-0.3913563992408456
+31
+2.5013776590983654
+12
+1.7926934587751069
+22
+-0.3913567047802016
+32
+3.1665576275747647
+13
+1.7926934587751069
+23
+-0.3913567047802016
+33
+3.1665576275747647
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7926934587751069
+20
+-0.3913567047802016
+30
+3.1665576275747647
+11
+1.6021802692501754
+21
+-0.3913563992408456
+31
+2.5013776590983654
+12
+1.7409189549547188
+22
+-0.39135639924089705
+32
+2.578281768371061
+13
+1.7409189549547188
+23
+-0.39135639924089705
+33
+2.578281768371061
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7926934587751069
+20
+-0.3913567047802016
+30
+3.1665576275747647
+11
+1.7409189549547188
+21
+-0.39135639924089705
+31
+2.578281768371061
+12
+1.7446152966499613
+22
+-0.3913456583466878
+32
+2.580311975438275
+13
+1.7446152966499613
+23
+-0.3913456583466878
+33
+2.580311975438275
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7926934587751069
+20
+-0.3913567047802016
+30
+3.1665576275747647
+11
+1.7446152966499613
+21
+-0.3913456583466878
+31
+2.580311975438275
+12
+1.772154666688709
+22
+-0.3913567014136412
+32
+2.822720712115689
+13
+1.772154666688709
+23
+-0.3913567014136412
+33
+2.822720712115689
+70
+0
+ 0
+LINE
+ 8
+palm
+10
+-1.1309407413407597
+20
+-0.3913562255597655
+30
+-0.029987258687019288
+11
+-1.1319509208062501
+21
+-0.3913562253941859
+31
+-0.02132949742758821
+ 0
+LINE
+ 8
+palm
+10
+-1.1309407413407597
+20
+-0.3913562255597655
+30
+-0.029987258687019288
+11
+-1.1292764794541248
+21
+-0.3913562258325619
+31
+-0.02132949742758821
+ 0
+LINE
+ 8
+palm
+10
+-0.5832376912892054
+20
+-0.39135631533519477
+30
+-0.029987250527314598
+11
+-0.583012265025729
+21
+-0.39135631537214516
+31
+-0.02132949742758821
+ 0
+LINE
+ 8
+palm
+10
+-0.578414963340186
+20
+-0.3913991426505551
+30
+-0.029987258687020648
+11
+-0.5782022063428369
+21
+-0.39139903017862127
+31
+-0.02132949742758821
+ 0
+3DFACE
+ 8
+palm
+10
+1.2238034110911722
+20
+0.4454575748968931
+30
+-0.021329497427587968
+11
+1.6842735371540238
+21
+0.4180043864972566
+31
+1.5645334413018623
+12
+1.2507989254112186
+22
+0.4173719437487061
+32
+-0.021329497427587975
+13
+1.2507989254112186
+23
+0.4173719437487061
+33
+-0.021329497427587975
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.37701750679978363
+21
+0.4699931231781628
+31
+-0.02132949742758796
+12
+0.30393240840636637
+22
+0.46999313439481716
+32
+-0.02132949742758796
+13
+0.30393240840636637
+23
+0.46999313439481716
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.3917065899222034
+21
+0.46999312076217903
+31
+-0.02132949742758796
+12
+0.37701750679978363
+22
+0.4699931231781628
+32
+-0.02132949742758796
+13
+0.37701750679978363
+23
+0.4699931231781628
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.3943443042278616
+21
+0.4699505935168484
+31
+-0.02132949742758796
+12
+0.3917065899222034
+22
+0.46999312076217903
+32
+-0.02132949742758796
+13
+0.3917065899222034
+23
+0.46999312076217903
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.40681163485900584
+21
+0.46999311827777523
+31
+-0.02132949742758796
+12
+0.3943443042278616
+22
+0.4699505935168484
+32
+-0.02132949742758796
+13
+0.3943443042278616
+23
+0.4699505935168484
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6840531358836734
+20
+0.16758654817261043
+30
+1.564545801366135
+11
+1.2236774151144043
+21
+0.13952109683086134
+31
+-0.021329497427588037
+12
+1.2504634291176997
+22
+0.16751202849710456
+32
+-0.02132949742758803
+13
+1.2504634291176997
+23
+0.16751202849710456
+33
+-0.02132949742758803
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6271010478658303
+20
+0.4638236469862328
+30
+1.567741117243121
+11
+1.219930606861509
+21
+0.4478937548149552
+31
+-0.021329497427587968
+12
+1.1923382645753737
+22
+0.4633074583588208
+32
+-0.021329497427587964
+13
+1.1923382645753737
+23
+0.4633074583588208
+33
+-0.021329497427587964
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.6271010478658303
+20
+0.4638236469862328
+30
+1.567741117243121
+11
+1.2238034110911722
+21
+0.4454575748968931
+31
+-0.021329497427587968
+12
+1.219930606861509
+22
+0.4478937548149552
+32
+-0.021329497427587968
+13
+1.219930606861509
+23
+0.4478937548149552
+33
+-0.021329497427587968
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.005897113385843644
+20
+0.6693395746160492
+30
+2.540767132815593
+11
+0.02923566660125987
+21
+0.4700131281459
+31
+-0.02132949742758796
+12
+0.012874725889247651
+22
+0.46997054580095277
+32
+-0.02132949742758796
+13
+0.012874725889247651
+23
+0.46997054580095277
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.0865919747182853
+21
+0.469670439906691
+31
+-0.02132949742758796
+12
+1.0855657084141692
+22
+0.4696689313614164
+32
+-0.02132949742758796
+13
+1.0855657084141692
+23
+0.4696689313614164
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.0865919747182853
+22
+0.469670439906691
+32
+-0.02132949742758796
+13
+1.0865919747182853
+23
+0.469670439906691
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940745180163998
+20
+0.4698512386274375
+30
+1.569594078001374
+11
+1.1886405422082358
+21
+0.4640412516089145
+31
+-0.021329497427587964
+12
+1.1591044450812846
+22
+0.4692998445383917
+32
+-0.02132949742758796
+13
+1.1591044450812846
+23
+0.4692998445383917
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940745180163998
+20
+0.4698512386274375
+30
+1.569594078001374
+11
+1.1923382645753737
+21
+0.4633074583588208
+31
+-0.021329497427587964
+12
+1.1886405422082358
+22
+0.4640412516089145
+32
+-0.021329497427587964
+13
+1.1886405422082358
+23
+0.4640412516089145
+33
+-0.021329497427587964
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.2712475811496826
+20
+0.3809548188019898
+30
+-0.021329497427587985
+11
+1.7172355129659331
+21
+0.3386311081408655
+31
+1.5626841007226204
+12
+1.2841736058160016
+22
+0.3381150408717304
+32
+-0.021329497427588
+13
+1.2841736058160016
+23
+0.3381150408717304
+33
+-0.021329497427588
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.5933226813458456
+20
+0.4693398367483087
+30
+1.438223809982218
+11
+-1.168401397979206
+21
+0.45476248418163134
+31
+-0.021329497427587947
+12
+-1.6254864989672675
+22
+0.4546760897419495
+32
+1.4294077340431952
+13
+-1.6254864989672675
+23
+0.4546760897419495
+33
+1.4294077340431952
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.5933226813458456
+20
+0.4693398367483087
+30
+1.438223809982218
+11
+-1.1668849566578618
+21
+0.45602679034629234
+31
+-0.021329497427587964
+12
+-1.168401397979206
+22
+0.45476248418163134
+32
+-0.021329497427587947
+13
+-1.168401397979206
+23
+0.45476248418163134
+33
+-0.021329497427587947
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.5933226813458456
+20
+0.4693398367483087
+30
+1.438223809982218
+11
+-1.1336673196459368
+21
+0.4692970973881342
+31
+-0.02132949742758796
+12
+-1.1668849566578618
+22
+0.45602679034629234
+32
+-0.021329497427587964
+13
+-1.1668849566578618
+23
+0.45602679034629234
+33
+-0.021329497427587964
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.2841162643931592
+20
+0.24722978915362082
+30
+-0.021329497427588023
+11
+1.7171548405019925
+21
+0.24697181775326893
+31
+1.562688624820141
+12
+1.271159922480886
+22
+0.20436827456875706
+32
+-0.02132949742758802
+13
+1.271159922480886
+23
+0.20436827456875706
+33
+-0.02132949742758802
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.271159922480886
+20
+0.20436827456875706
+30
+-0.02132949742758802
+11
+1.7043674386969119
+21
+0.20426307292245227
+31
+1.5634060638185832
+12
+1.2504634291176997
+22
+0.16751202849710456
+32
+-0.02132949742758803
+13
+1.2504634291176997
+23
+0.16751202849710456
+33
+-0.02132949742758803
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.7215439009982167
+20
+0.29280225228437573
+30
+1.5624423766529374
+11
+1.2841162643931592
+21
+0.24722978915362082
+31
+-0.021329497427588023
+12
+1.288529285669313
+22
+0.2925487173065494
+32
+-0.02132949742758801
+13
+1.288529285669313
+23
+0.2925487173065494
+33
+-0.02132949742758801
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.2507989254112186
+20
+0.4173719437487061
+30
+-0.021329497427587975
+11
+1.7045232859296717
+21
+0.38133522453188085
+31
+1.563397323933316
+12
+1.2712475811496826
+22
+0.3809548188019898
+32
+-0.021329497427587985
+13
+1.2712475811496826
+23
+0.3809548188019898
+33
+-0.021329497427587985
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.36549624538853664
+20
+-0.027628056394505163
+30
+0.4636345688323606
+11
+0.3644662888731871
+21
+0.008824680721530365
+31
+0.34279860846433485
+12
+0.550466253549162
+22
+-0.25758949619382754
+32
+0.5288554937193
+13
+0.550466253549162
+23
+-0.25758949619382754
+33
+0.5288554937193
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.3644662888731871
+20
+0.008824680721530365
+30
+0.34279860846433485
+11
+0.36549624538853664
+21
+-0.027628056394505163
+31
+0.4636345688323606
+12
+0.36482121142358914
+22
+-0.0037369160378684096
+32
+0.3844386258749987
+13
+0.36482121142358914
+23
+-0.0037369160378684096
+33
+0.3844386258749987
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.36482121142358914
+20
+-0.0037369160378684096
+30
+0.3844386258749987
+11
+0.36549624538853664
+21
+-0.027628056394505163
+31
+0.4636345688323606
+12
+0.3650671801086316
+22
+-0.01768427529481076
+32
+0.4316438776974501
+13
+0.3650671801086316
+23
+-0.01768427529481076
+33
+0.4316438776974501
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.36549624538853664
+20
+-0.027628056394505163
+30
+0.4636345688323606
+11
+0.550466253549162
+21
+-0.25758949619382754
+31
+0.5288554937193
+12
+0.36578346365589165
+22
+-0.037793429241581966
+32
+0.49733142365469324
+13
+0.36578346365589165
+23
+-0.037793429241581966
+33
+0.49733142365469324
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.546029358796021
+21
+-0.10514823446237304
+31
+0.9734561491256183
+12
+0.6829285253868831
+22
+-0.3118173806673699
+32
+1.1089028616100112
+13
+0.6829285253868831
+23
+-0.3118173806673699
+33
+1.1089028616100112
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.546029358796021
+20
+-0.10514823446237304
+30
+0.9734561491256183
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.5551727011859529
+22
+-0.10458326330281831
+32
+0.9844541997546986
+13
+0.5551727011859529
+23
+-0.10458326330281831
+33
+0.9844541997546986
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.546029358796021
+20
+-0.10514823446237304
+30
+0.9734561491256183
+11
+0.5551727011859529
+21
+-0.10458326330281831
+31
+0.9844541997546986
+12
+0.5495724628831538
+22
+-0.10484745230472176
+32
+0.977734224044443
+13
+0.5495724628831538
+23
+-0.10484745230472176
+33
+0.977734224044443
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.5495724628831538
+20
+-0.10484745230472176
+30
+0.977734224044443
+11
+0.5551727011859529
+21
+-0.10458326330281831
+31
+0.9844541997546986
+12
+0.5513988760171851
+22
+-0.10471927211351728
+32
+0.9800110958759284
+13
+0.5513988760171851
+23
+-0.10471927211351728
+33
+0.9800110958759284
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.886816064498108
+20
+-0.07019890877981821
+30
+1.24618250303494
+11
+0.7589811239628956
+21
+-0.07796090531019828
+31
+1.1798646699340118
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7589811239628956
+20
+-0.07796090531019828
+30
+1.1798646699340118
+11
+0.886816064498108
+21
+-0.07019890877981821
+31
+1.24618250303494
+12
+0.7626223302383062
+22
+-0.07769244209007636
+32
+1.1819181088261714
+13
+0.7626223302383062
+23
+-0.07769244209007636
+33
+1.1819181088261714
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8651868766935726
+20
+-0.17830415189829452
+30
+1.2693730886615773
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7535113909177122
+22
+-0.07968804570622262
+32
+1.177433109344653
+13
+0.7535113909177122
+23
+-0.07968804570622262
+33
+1.177433109344653
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7556951133309526
+20
+-0.07922417161832584
+30
+1.1782818075904975
+11
+0.8651868766935726
+21
+-0.17830415189829452
+31
+1.2693730886615773
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7556951133309526
+20
+-0.07922417161832584
+30
+1.1782818075904975
+11
+0.39312210101004275
+21
+-0.3913563992408881
+31
+1.4868573960561888
+12
+0.7535113909177122
+22
+-0.07968804570622262
+32
+1.177433109344653
+13
+0.7535113909177122
+23
+-0.07968804570622262
+33
+1.177433109344653
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.6903109494372404
+21
+-0.09112388712480801
+31
+1.1269513721715114
+12
+0.7535113909177122
+22
+-0.07968804570622262
+32
+1.177433109344653
+13
+0.7535113909177122
+23
+-0.07968804570622262
+33
+1.177433109344653
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.7626223302383062
+20
+-0.07769244209007636
+30
+1.1819181088261714
+11
+0.4971910657083536
+21
+-0.39135639924089705
+31
+1.606575045217334
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.4971910657083536
+20
+-0.39135639924089705
+30
+1.606575045217334
+11
+0.7626223302383062
+21
+-0.07769244209007636
+31
+1.1819181088261714
+12
+0.8687347277652708
+22
+-0.044300385349433036
+32
+1.2280956329668686
+13
+0.8687347277652708
+23
+-0.044300385349433036
+33
+1.2280956329668686
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.5933228224247524
+20
+-0.39135614976952593
+30
+1.4382238099822164
+11
+-1.625486635239021
+21
+-0.37669239221898876
+31
+1.4294077340431905
+12
+-1.1684015342793297
+22
+-0.37677893650277927
+32
+-0.02132949742758821
+13
+-1.1684015342793297
+23
+-0.37677893650277927
+33
+-0.02132949742758821
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.5933228224247524
+20
+-0.39135614976952593
+30
+1.4382238099822164
+11
+-1.1684015342793297
+21
+-0.37677893650277927
+31
+-0.02132949742758821
+12
+-1.1668849574897702
+22
+-0.37682160620781435
+32
+-0.02132949742758821
+13
+-1.1668849574897702
+23
+-0.37682160620781435
+33
+-0.02132949742758821
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.5933228224247524
+20
+-0.39135614976952593
+30
+1.4382238099822164
+11
+-1.1668849574897702
+21
+-0.37682160620781435
+31
+-0.02132949742758821
+12
+-1.1336673204778431
+22
+-0.39135622511284507
+32
+-0.02132949742758821
+13
+-1.1336673204778431
+23
+-0.39135622511284507
+33
+-0.02132949742758821
+70
+0
+ 0
+LINE
+ 8
+palm
+10
+-1.1643554183438858
+20
+-0.3767353903721002
+30
+-0.029987258687024003
+11
+-1.1668849574897702
+21
+-0.37682160620781435
+31
+-0.02132949742758821
+ 0
+3DFACE
+ 8
+palm
+10
+0.4353642452976316
+20
+0.11569951797503464
+30
+0.11442537734154945
+11
+0.4285775499251552
+21
+0.11569951797502342
+31
+0.0998712621479301
+12
+0.50132984375442
+22
+0.11565962429931465
+32
+-0.021329497427588065
+13
+0.50132984375442
+23
+0.11565962429931465
+33
+-0.021329497427588065
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.5124547865828502
+21
+0.11566051068828076
+31
+-0.021329497427588065
+12
+0.5172420255570696
+22
+0.11566064969066137
+32
+-0.021329497427588065
+13
+0.5172420255570696
+23
+0.11566064969066137
+33
+-0.021329497427588065
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.5259410929604285
+21
+0.11566090227696957
+31
+-0.021329497427588065
+12
+0.5300600388642229
+22
+0.11566051068827854
+32
+-0.021329497427588065
+13
+0.5300600388642229
+23
+0.11566051068827854
+33
+-0.021329497427588065
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.3037516634831137
+20
+0.11569939636982962
+30
+0.5600494187408283
+11
+1.226889266259492
+21
+0.11569939018870201
+31
+0.4205002886903231
+12
+1.158085651441559
+22
+0.11569931808967426
+32
+-0.021329497427588065
+13
+1.158085651441559
+23
+0.11569931808967426
+33
+-0.021329497427588065
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.3466706909373627
+20
+0.11569941023242802
+30
+0.703371831037376
+11
+1.3037516634831137
+21
+0.11569939636982962
+31
+0.5600494187408283
+12
+1.158085651441559
+22
+0.11569931808967426
+32
+-0.021329497427588065
+13
+1.158085651441559
+23
+0.11569931808967426
+33
+-0.021329497427588065
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.3479240404844608
+21
+0.11569941449928345
+31
+0.7318177742169286
+12
+1.3466706909373627
+22
+0.11569941023242802
+32
+0.703371831037376
+13
+1.3466706909373627
+23
+0.11569941023242802
+33
+0.703371831037376
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.3505091197150552
+21
+0.11569951797502342
+31
+1.3688012067183613
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.4498747685188131
+21
+0.11569951797502342
+31
+1.4551784474179665
+12
+1.3505091197150552
+22
+0.11569951797502342
+32
+1.3688012067183613
+13
+1.3505091197150552
+23
+0.11569951797502342
+33
+1.3688012067183613
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.552194408681052
+21
+0.11569951797501443
+31
+1.538035258303604
+12
+1.4498747685188131
+22
+0.11569951797502342
+32
+1.4551784474179665
+13
+1.4498747685188131
+23
+0.11569951797502342
+33
+1.4551784474179665
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.0713278635011771
+20
+0.11569951797501443
+30
+1.0896199505044737
+11
+1.0500873483302444
+21
+0.11569952969883424
+31
+1.0651855328987245
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.1611202966523455
+20
+0.11569951797501443
+30
+1.1859105462127746
+11
+1.0713278635011771
+21
+0.11569951797501443
+31
+1.0896199505044737
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.2542185240067691
+20
+0.11569951797501443
+30
+1.2790087735671853
+11
+1.1611202966523455
+21
+0.11569951797501443
+31
+1.1859105462127746
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.3505091197150552
+20
+0.11569951797502342
+30
+1.3688012067183613
+11
+1.2542185240067691
+21
+0.11569951797501443
+31
+1.2790087735671853
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+0
+ 0
+LINE
+ 8
+palm
+10
+0.506526774807132
+20
+0.1156567745653565
+30
+-0.029987258687019527
+11
+0.5124547865828502
+21
+0.11566051068828076
+31
+-0.021329497427588065
+ 0
+LINE
+ 8
+palm
+10
+0.5115493143264411
+20
+0.1156567745653565
+30
+-0.030341524099559827
+11
+0.5172420255570696
+21
+0.11566064969066137
+31
+-0.021329497427588065
+ 0
+LINE
+ 8
+palm
+10
+0.5207686193887258
+20
+0.1156567745653565
+30
+-0.03099180886072411
+11
+0.5259410929604285
+21
+0.11566090227696957
+31
+-0.021329497427588065
+ 0
+LINE
+ 8
+palm
+10
+0.5258203210477908
+20
+0.1156567745653565
+30
+-0.02998725868702064
+11
+0.5300600388642229
+21
+0.11566051068827854
+31
+-0.021329497427588065
+ 0
+LINE
+ 8
+palm
+10
+1.1567374333163143
+20
+0.11569931667688083
+30
+-0.02998722460508882
+11
+1.1193597020926875
+21
+0.1156993272304514
+31
+-0.021329497427588065
+ 0
+LINE
+ 8
+palm
+10
+1.1567374333163143
+20
+0.11569931667688083
+30
+-0.02998722460508882
+11
+1.1386136044693458
+21
+0.11569932282059703
+31
+-0.021329497427588065
+ 0
+LINE
+ 8
+palm
+10
+1.1567374333163143
+20
+0.11569931667688083
+30
+-0.02998722460508882
+11
+1.1503381943269562
+21
+0.11569932003715266
+31
+-0.021329497427588065
+ 0
+LINE
+ 8
+palm
+10
+1.1567374333163143
+20
+0.11569931667688083
+30
+-0.02998722460508882
+11
+1.155791719027395
+21
+0.11569931869118599
+31
+-0.021329497427588065
+ 0
+3DFACE
+ 8
+palm
+10
+0.8488303158904233
+20
+-0.21621663583415707
+30
+1.2727812042605189
+11
+0.6437434044296662
+21
+-0.09951752352774346
+31
+1.0897797118446357
+12
+0.6406857800208818
+22
+-0.1001033428773545
+32
+1.0873129661577854
+13
+0.6406857800208818
+23
+-0.1001033428773545
+33
+1.0873129661577854
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.6437434044296662
+20
+-0.09951752352774346
+30
+1.0897797118446357
+11
+0.8488303158904233
+21
+-0.21621663583415707
+31
+1.2727812042605189
+12
+0.6454971629912596
+22
+-0.09918946164044506
+32
+1.0911506801973632
+13
+0.6454971629912596
+23
+-0.09918946164044506
+33
+1.0911506801973632
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.6454971629912596
+20
+-0.09918946164044506
+30
+1.0911506801973632
+11
+0.8488303158904233
+21
+-0.21621663583415707
+31
+1.2727812042605189
+12
+0.6656080837778451
+22
+-0.09556715674214389
+32
+1.1072238076213345
+13
+0.6656080837778451
+23
+-0.09556715674214389
+33
+1.1072238076213345
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.6656080837778451
+20
+-0.09556715674214389
+30
+1.1072238076213345
+11
+0.8488303158904233
+21
+-0.21621663583415707
+31
+1.2727812042605189
+12
+0.6738975482255489
+22
+-0.09407408897106695
+32
+1.113848945264622
+13
+0.6738975482255489
+23
+-0.09407408897106695
+33
+1.113848945264622
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.6738975482255489
+20
+-0.09407408897106695
+30
+1.113848945264622
+11
+0.8488303158904233
+21
+-0.21621663583415707
+31
+1.2727812042605189
+12
+0.6903109494372404
+22
+-0.09112388712480801
+32
+1.1269513721715114
+13
+0.6903109494372404
+23
+-0.09112388712480801
+33
+1.1269513721715114
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8488303158904233
+20
+-0.21621663583415707
+30
+1.2727812042605189
+11
+0.7535113909177122
+21
+-0.07968804570622262
+31
+1.177433109344653
+12
+0.6903109494372404
+22
+-0.09112388712480801
+32
+1.1269513721715114
+13
+0.6903109494372404
+23
+-0.09112388712480801
+33
+1.1269513721715114
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.70094493989614
+20
+0.2541658577595415
+30
+1.4087246449502895
+11
+-1.250660927301903
+21
+0.2535397136991191
+31
+-0.021329497427588023
+12
+-1.7133597261865965
+22
+0.15037411984202997
+32
+1.4053217666544113
+13
+-1.7133597261865965
+23
+0.15037411984202997
+33
+1.4053217666544113
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.250660927301903
+20
+0.2535397136991191
+30
+-0.021329497427588023
+11
+-1.258406935484123
+21
+0.18950834630357194
+31
+-0.021329497427588044
+12
+-1.7133597261865965
+22
+0.15037411984202997
+32
+1.4053217666544113
+13
+-1.7133597261865965
+23
+0.15037411984202997
+33
+1.4053217666544113
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.258406935484123
+20
+0.18950834630357194
+30
+-0.021329497427588044
+11
+-1.2640660281999483
+21
+0.150374046197144
+31
+-0.021329497427588058
+12
+-1.7133597261865965
+22
+0.15037411984202997
+32
+1.4053217666544113
+13
+-1.7133597261865965
+23
+0.15037411984202997
+33
+1.4053217666544113
+70
+0
+ 0
+LINE
+ 8
+palm
+10
+-1.2556460136349066
+20
+0.1897458358697347
+30
+-0.029987258687020634
+11
+-1.258406935484123
+21
+0.18950834630357194
+31
+-0.021329497427588044
+ 0
+LINE
+ 8
+palm
+10
+0.9999663543403632
+20
+0.4155734604408693
+30
+-0.03009570209834563
+11
+1.1567374333163143
+21
+0.11569931667688083
+31
+-0.02998722460508882
+ 0
+LINE
+ 8
+palm
+10
+1.2177122174997808
+20
+0.44780696387981456
+30
+-0.029987241191849277
+11
+1.2212895491922697
+21
+0.14066089589484243
+31
+-0.0299872586870184
+ 0
+LINE
+ 8
+palm
+10
+1.1864341863376306
+20
+0.46400963388634264
+30
+-0.029987241424839453
+11
+1.1899268475563274
+21
+0.12173065789656323
+31
+-0.029987224110628933
+ 0
+LINE
+ 8
+palm
+10
+0.016046336604195188
+20
+-0.10354326518386514
+30
+-0.029987241599155137
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+ 0
+LINE
+ 8
+palm
+10
+0.19808200538601128
+20
+0.02515989535827129
+30
+-0.029987258687020648
+11
+0.37380774416773943
+21
+0.11569951797501443
+31
+-0.029987236269210224
+ 0
+LINE
+ 8
+palm
+10
+0.3767943786960426
+20
+0.4693395138213242
+30
+-0.02998724745586906
+11
+0.3743671955219494
+21
+0.18194276692314504
+31
+-0.02998724746310961
+ 0
+LINE
+ 8
+palm
+10
+0.39417798635535983
+20
+0.4692968438672974
+30
+-0.02998725868702286
+11
+0.37380774416773943
+21
+0.11569951797501443
+31
+-0.029987236269210224
+ 0
+LINE
+ 8
+palm
+10
+0.37380774416773943
+20
+0.11569951797501443
+30
+-0.029987236269210224
+11
+0.4066861946168403
+21
+0.4693395089216774
+31
+-0.029987247233204176
+ 0
+LINE
+ 8
+palm
+10
+-0.37798921673072106
+20
+0.4693396375398492
+30
+-0.029987253078268685
+11
+-0.4476786151194132
+21
+-0.3913563992408948
+31
+-0.029987248507749635
+ 0
+LINE
+ 8
+palm
+10
+-0.37798921673072106
+20
+0.4693396375398492
+30
+-0.029987253078268685
+11
+0.016046336604195188
+21
+-0.10354326518386514
+31
+-0.029987241599155137
+ 0
+LINE
+ 8
+palm
+10
+-0.37798921673072106
+20
+0.4693396375398492
+30
+-0.029987253078268685
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+ 0
+LINE
+ 8
+palm
+10
+-0.3683813774927045
+20
+0.4692968438672974
+30
+-0.02998725868702286
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+ 0
+LINE
+ 8
+palm
+10
+0.3743671955219494
+20
+0.18194276692314504
+30
+-0.02998724746310961
+11
+0.3704083435673351
+21
+0.11565677456535195
+31
+-0.02998725868702064
+ 0
+LINE
+ 8
+palm
+10
+1.219930606861509
+20
+0.4478937548149552
+30
+-0.021329497427587968
+11
+1.2177122174997808
+21
+0.44780696387981456
+31
+-0.029987241191849277
+ 0
+LINE
+ 8
+palm
+10
+1.1886405422082358
+20
+0.4640412516089145
+30
+-0.021329497427587964
+11
+1.1864341863376306
+21
+0.46400963388634264
+31
+-0.029987241424839453
+ 0
+LINE
+ 8
+palm
+10
+-1.1668849566578618
+20
+0.45602679034629234
+30
+-0.021329497427587964
+11
+-1.1643554183438858
+21
+0.45594782017314683
+31
+-0.029987258687021203
+ 0
+LINE
+ 8
+palm
+10
+1.2212895491922697
+20
+0.14066089589484243
+30
+-0.0299872586870184
+11
+1.2211640983670373
+21
+0.1393678798698048
+31
+-0.029987223645254617
+ 0
+LINE
+ 8
+palm
+10
+0.3743671955219494
+20
+0.18194276692314504
+30
+-0.02998724746310961
+11
+0.37380774416773943
+21
+0.11569951797501443
+31
+-0.029987236269210224
+ 0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.5300600388642229
+21
+0.11566051068827854
+31
+-0.021329497427588065
+12
+1.1057685335055842
+22
+0.1156993301253959
+32
+-0.021329497427588065
+13
+1.1057685335055842
+23
+0.1156993301253959
+33
+-0.021329497427588065
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.005897113385843644
+20
+0.6693395746160492
+30
+2.540767132815593
+11
+0.30246749279966134
+21
+0.4700130823729538
+31
+-0.02132949742758796
+12
+0.02923566660125987
+22
+0.4700131281459
+32
+-0.02132949742758796
+13
+0.02923566660125987
+23
+0.4700131281459
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.40681163485900584
+22
+0.46999311827777523
+32
+-0.02132949742758796
+13
+0.40681163485900584
+23
+0.46999311827777523
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.0855657084141692
+21
+0.4696689313614164
+31
+-0.02132949742758796
+12
+0.7296300798328395
+22
+0.4696682231644226
+32
+-0.02132949742758796
+13
+0.7296300798328395
+23
+0.4696682231644226
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4974274817566946
+20
+-0.39135632940056486
+30
+3.2656518472615215
+11
+-1.1292764794541248
+21
+-0.3913562258325619
+31
+-0.02132949742758821
+12
+-0.583012265025729
+22
+-0.39135631537214516
+32
+-0.02132949742758821
+13
+-0.583012265025729
+23
+-0.39135631537214516
+33
+-0.02132949742758821
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.433275824211661
+20
+0.6693396466020395
+30
+2.4623092723969795
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.7010674590880783
+22
+0.4700344517163295
+32
+-0.02132949742758796
+13
+-0.7010674590880783
+23
+0.4700344517163295
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.39603457201367
+20
+-0.3913563992408881
+30
+0.11999794324711321
+11
+-0.44530211084188664
+21
+-0.39135639947577183
+31
+-0.02132949742758821
+12
+-0.007740620010602495
+22
+-0.12015698930892682
+32
+-0.021329497427588134
+13
+-0.007740620010602495
+23
+-0.12015698930892682
+33
+-0.021329497427588134
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.005897113385843644
+20
+0.6693395746160492
+30
+2.540767132815593
+11
+0.012874725889247651
+21
+0.46997054580095277
+31
+-0.02132949742758796
+12
+-0.27212184387072247
+22
+0.47001317722134817
+32
+-0.02132949742758796
+13
+-0.27212184387072247
+23
+0.47001317722134817
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.433275824211661
+20
+0.6693396466020395
+30
+2.4623092723969795
+11
+-0.2736178696594298
+21
+0.4700343811409351
+31
+-0.02132949742758796
+12
+-0.40336837254389635
+22
+0.47003440299726207
+32
+-0.02132949742758796
+13
+-0.40336837254389635
+23
+0.47003440299726207
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4974274817566946
+20
+-0.39135632940056486
+30
+3.2656518472615215
+11
+-0.5782022063428369
+21
+-0.39139903017862127
+31
+-0.02132949742758821
+12
+-0.4478093070099276
+22
+-0.39135639905742076
+32
+-0.02132949742758821
+13
+-0.4478093070099276
+23
+-0.39135639905742076
+33
+-0.02132949742758821
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2344292513491493
+20
+0.5693397779211644
+30
+2.1309506849853554
+11
+-0.7041341214652392
+21
+0.4697403390103124
+31
+-0.02132949742758796
+12
+-1.1313553663027527
+22
+0.46969766418759396
+32
+-0.02132949742758796
+13
+-1.1313553663027527
+23
+0.46969766418759396
+33
+-0.02132949742758796
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.5172420255570696
+21
+0.11566064969066137
+31
+-0.021329497427588065
+12
+0.5259410929604285
+22
+0.11566090227696957
+32
+-0.021329497427588065
+13
+0.5259410929604285
+23
+0.11566090227696957
+33
+-0.021329497427588065
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.159104517712921
+21
+0.11569931776640818
+31
+-0.021329497427588065
+12
+1.1922941387017831
+22
+0.12173074383943339
+32
+-0.021329497427588044
+13
+1.1922941387017831
+23
+0.12173074383943339
+33
+-0.021329497427588044
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.7589811239628956
+20
+-0.07796090531019828
+30
+1.1798646699340118
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.7584040700658974
+20
+-0.07895235839940429
+30
+1.1802472966562991
+11
+0.7589811239628956
+21
+-0.07796090531019828
+31
+1.1798646699340118
+12
+0.7556951133309526
+22
+-0.07922417161832584
+32
+1.1782818075904975
+13
+0.7556951133309526
+23
+-0.07922417161832584
+33
+1.1782818075904975
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.7626223302383062
+20
+-0.07769244209007636
+30
+1.1819181088261714
+11
+0.7589811239628956
+21
+-0.07796090531019828
+31
+1.1798646699340118
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.7626223302383062
+20
+-0.07769244209007636
+30
+1.1819181088261714
+11
+0.7589811239628956
+21
+-0.07796090531019828
+31
+1.1798646699340118
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2640660281999483
+20
+0.150374046197144
+30
+-0.021329497427588058
+11
+-1.2640660647138675
+21
+-0.07239046715696767
+31
+-0.021329497427588117
+12
+-1.2686660179281843
+22
+0.03899179027408667
+32
+-0.021329497427588086
+13
+-1.2686660179281843
+23
+0.03899179027408667
+33
+-0.021329497427588086
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2640660647138675
+20
+-0.07239046715696767
+30
+-0.021329497427588117
+11
+-1.2640660281999483
+21
+0.150374046197144
+31
+-0.021329497427588058
+12
+-1.2505796477668625
+22
+-0.1761822093199848
+32
+-0.021329497427588127
+13
+-1.2505796477668625
+23
+-0.1761822093199848
+33
+-0.021329497427588127
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2505796477668625
+20
+-0.1761822093199848
+30
+-0.021329497427588127
+11
+-1.2640660281999483
+21
+0.150374046197144
+31
+-0.021329497427588058
+12
+-1.258406935484123
+22
+0.18950834630357194
+32
+-0.021329497427588044
+13
+-1.258406935484123
+23
+0.18950834630357194
+33
+-0.021329497427588044
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2505796477668625
+20
+-0.1761822093199848
+30
+-0.021329497427588127
+11
+-1.258406935484123
+21
+0.18950834630357194
+31
+-0.021329497427588044
+12
+-1.250660927301903
+22
+0.2535397136991191
+32
+-0.021329497427588023
+13
+-1.250660927301903
+23
+0.2535397136991191
+33
+-0.021329497427588023
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2505796477668625
+20
+-0.1761822093199848
+30
+-0.021329497427588127
+11
+-1.250660927301903
+21
+0.2535397136991191
+31
+-0.021329497427588023
+12
+-1.2291257442446226
+22
+0.34329376805461653
+32
+-0.021329497427588
+13
+-1.2291257442446226
+23
+0.34329376805461653
+33
+-0.021329497427588
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2505796477668625
+20
+-0.1761822093199848
+30
+-0.021329497427588127
+11
+-1.2291257442446226
+21
+0.34329376805461653
+31
+-0.021329497427588
+12
+-1.2291258441147315
+22
+-0.26531020051043686
+32
+-0.021329497427588155
+13
+-1.2291258441147315
+23
+-0.26531020051043686
+33
+-0.021329497427588155
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2291258441147315
+20
+-0.26531020051043686
+30
+-0.021329497427588155
+11
+-1.2291257442446226
+21
+0.34329376805461653
+31
+-0.021329497427588
+12
+-1.2011666950222017
+22
+-0.3337005154197999
+32
+-0.021329497427588197
+13
+-1.2011666950222017
+23
+-0.3337005154197999
+33
+-0.021329497427588197
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2011666950222017
+20
+-0.3337005154197999
+30
+-0.021329497427588197
+11
+-1.2291257442446226
+21
+0.34329376805461653
+31
+-0.021329497427588
+12
+-1.2011665727838676
+22
+0.41168407379832106
+32
+-0.021329497427587975
+13
+-1.2011665727838676
+23
+0.41168407379832106
+33
+-0.021329497427587975
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2011666950222017
+20
+-0.3337005154197999
+30
+-0.021329497427588197
+11
+-1.2011665727838676
+21
+0.41168407379832106
+31
+-0.021329497427587975
+12
+-1.1684015342793297
+22
+-0.37677893650277927
+32
+-0.02132949742758821
+13
+-1.1684015342793297
+23
+-0.37677893650277927
+33
+-0.02132949742758821
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1684015342793297
+20
+-0.37677893650277927
+30
+-0.02132949742758821
+11
+-1.2011665727838676
+21
+0.41168407379832106
+31
+-0.021329497427587975
+12
+-1.168401397979206
+22
+0.45476248418163134
+32
+-0.021329497427587947
+13
+-1.168401397979206
+23
+0.45476248418163134
+33
+-0.021329497427587947
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1684015342793297
+20
+-0.37677893650277927
+30
+-0.02132949742758821
+11
+-1.168401397979206
+21
+0.45476248418163134
+31
+-0.021329497427587947
+12
+-1.1668849574897702
+22
+-0.37682160620781435
+32
+-0.02132949742758821
+13
+-1.1668849574897702
+23
+-0.37682160620781435
+33
+-0.02132949742758821
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1668849574897702
+20
+-0.37682160620781435
+30
+-0.02132949742758821
+11
+-1.168401397979206
+21
+0.45476248418163134
+31
+-0.021329497427587947
+12
+-1.1668849566578618
+22
+0.45602679034629234
+32
+-0.021329497427587964
+13
+-1.1668849566578618
+23
+0.45602679034629234
+33
+-0.021329497427587964
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1668849574897702
+20
+-0.37682160620781435
+30
+-0.02132949742758821
+11
+-1.1668849566578618
+21
+0.45602679034629234
+31
+-0.021329497427587964
+12
+-1.1336673204778431
+22
+-0.39135622511284507
+32
+-0.02132949742758821
+13
+-1.1336673204778431
+23
+-0.39135622511284507
+33
+-0.02132949742758821
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1336673204778431
+20
+-0.39135622511284507
+30
+-0.02132949742758821
+11
+-1.1668849566578618
+21
+0.45602679034629234
+31
+-0.021329497427587964
+12
+-1.1336673196459368
+22
+0.4692970973881342
+32
+-0.02132949742758796
+13
+-1.1336673196459368
+23
+0.4692970973881342
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1336673204778431
+20
+-0.39135622511284507
+30
+-0.02132949742758821
+11
+-1.1336673196459368
+21
+0.4692970973881342
+31
+-0.02132949742758796
+12
+-1.1319509208062501
+22
+-0.3913562253941859
+32
+-0.02132949742758821
+13
+-1.1319509208062501
+23
+-0.3913562253941859
+33
+-0.02132949742758821
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1319509208062501
+20
+-0.3913562253941859
+30
+-0.02132949742758821
+11
+-1.1336673196459368
+21
+0.4692970973881342
+31
+-0.02132949742758796
+12
+-1.1313553663027527
+22
+0.46969766418759396
+32
+-0.02132949742758796
+13
+-1.1313553663027527
+23
+0.46969766418759396
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1319509208062501
+20
+-0.3913562253941859
+30
+-0.02132949742758821
+11
+-1.1313553663027527
+21
+0.46969766418759396
+31
+-0.02132949742758796
+12
+-1.1292764794541248
+22
+-0.3913562258325619
+32
+-0.02132949742758821
+13
+-1.1292764794541248
+23
+-0.3913562258325619
+33
+-0.02132949742758821
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1292764794541248
+20
+-0.3913562258325619
+30
+-0.02132949742758821
+11
+-1.1313553663027527
+21
+0.46969766418759396
+31
+-0.02132949742758796
+12
+-0.7041341214652392
+22
+0.4697403390103124
+32
+-0.02132949742758796
+13
+-0.7041341214652392
+23
+0.4697403390103124
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1292764794541248
+20
+-0.3913562258325619
+30
+-0.02132949742758821
+11
+-0.7041341214652392
+21
+0.4697403390103124
+31
+-0.02132949742758796
+12
+-0.583012265025729
+22
+-0.39135631537214516
+32
+-0.02132949742758821
+13
+-0.583012265025729
+23
+-0.39135631537214516
+33
+-0.02132949742758821
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-0.583012265025729
+20
+-0.39135631537214516
+30
+-0.02132949742758821
+11
+-0.7041341214652392
+21
+0.4697403390103124
+31
+-0.02132949742758796
+12
+-0.7010674590880783
+22
+0.4700344517163295
+32
+-0.02132949742758796
+13
+-0.7010674590880783
+23
+0.4700344517163295
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-0.583012265025729
+20
+-0.39135631537214516
+30
+-0.02132949742758821
+11
+-0.7010674590880783
+21
+0.4700344517163295
+31
+-0.02132949742758796
+12
+-0.40336837254389635
+22
+0.47003440299726207
+32
+-0.02132949742758796
+13
+-0.40336837254389635
+23
+0.47003440299726207
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-0.583012265025729
+20
+-0.39135631537214516
+30
+-0.02132949742758821
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.5782022063428369
+22
+-0.39139903017862127
+32
+-0.02132949742758821
+13
+-0.5782022063428369
+23
+-0.39139903017862127
+33
+-0.02132949742758821
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-0.5782022063428369
+20
+-0.39139903017862127
+30
+-0.02132949742758821
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.4478093070099276
+22
+-0.39135639905742076
+32
+-0.02132949742758821
+13
+-0.4478093070099276
+23
+-0.39135639905742076
+33
+-0.02132949742758821
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4478093070099276
+20
+-0.39135639905742076
+30
+-0.02132949742758821
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.44530211084188664
+22
+-0.39135639947577183
+32
+-0.02132949742758821
+13
+-0.44530211084188664
+23
+-0.39135639947577183
+33
+-0.02132949742758821
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-0.44530211084188664
+20
+-0.39135639947577183
+30
+-0.02132949742758821
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.007740620010602495
+22
+-0.12015698930892682
+32
+-0.021329497427588134
+13
+-0.007740620010602495
+23
+-0.12015698930892682
+33
+-0.021329497427588134
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+-0.007740620010602495
+20
+-0.12015698930892682
+30
+-0.021329497427588134
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.2736178696594298
+22
+0.4700343811409351
+32
+-0.02132949742758796
+13
+-0.2736178696594298
+23
+0.4700343811409351
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-0.007740620010602495
+20
+-0.12015698930892682
+30
+-0.021329497427588134
+11
+-0.2736178696594298
+21
+0.4700343811409351
+31
+-0.02132949742758796
+12
+-0.27212184387072247
+22
+0.47001317722134817
+32
+-0.02132949742758796
+13
+-0.27212184387072247
+23
+0.47001317722134817
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-0.007740620010602495
+20
+-0.12015698930892682
+30
+-0.021329497427588134
+11
+-0.27212184387072247
+21
+0.47001317722134817
+31
+-0.02132949742758796
+12
+0.012874725889247651
+22
+0.46997054580095277
+32
+-0.02132949742758796
+13
+0.012874725889247651
+23
+0.46997054580095277
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+-0.007740620010602495
+20
+-0.12015698930892682
+30
+-0.021329497427588134
+11
+0.012874725889247651
+21
+0.46997054580095277
+31
+-0.02132949742758796
+12
+0.37713358643564576
+22
+0.11569951797501443
+32
+-0.021323120946165536
+13
+0.37713358643564576
+23
+0.11569951797501443
+33
+-0.021323120946165536
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.012874725889247651
+21
+0.46997054580095277
+31
+-0.02132949742758796
+12
+0.02923566660125987
+22
+0.4700131281459
+32
+-0.02132949742758796
+13
+0.02923566660125987
+23
+0.4700131281459
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.02923566660125987
+21
+0.4700131281459
+31
+-0.02132949742758796
+12
+0.30246749279966134
+22
+0.4700130823729538
+32
+-0.02132949742758796
+13
+0.30246749279966134
+23
+0.4700130823729538
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.30246749279966134
+21
+0.4700130823729538
+31
+-0.02132949742758796
+12
+0.30393240840636637
+22
+0.46999313439481716
+32
+-0.02132949742758796
+13
+0.30393240840636637
+23
+0.46999313439481716
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.30393240840636637
+21
+0.46999313439481716
+31
+-0.02132949742758796
+12
+0.37701750679978363
+22
+0.4699931231781628
+32
+-0.02132949742758796
+13
+0.37701750679978363
+23
+0.4699931231781628
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.37701750679978363
+21
+0.4699931231781628
+31
+-0.02132949742758796
+12
+0.3917065899222034
+22
+0.46999312076217903
+32
+-0.02132949742758796
+13
+0.3917065899222034
+23
+0.46999312076217903
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.3917065899222034
+21
+0.46999312076217903
+31
+-0.02132949742758796
+12
+0.50132984375442
+22
+0.11565962429931465
+32
+-0.021329497427588065
+13
+0.50132984375442
+23
+0.11565962429931465
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.50132984375442
+20
+0.11565962429931465
+30
+-0.021329497427588065
+11
+0.3917065899222034
+21
+0.46999312076217903
+31
+-0.02132949742758796
+12
+0.3943443042278616
+22
+0.4699505935168484
+32
+-0.02132949742758796
+13
+0.3943443042278616
+23
+0.4699505935168484
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.50132984375442
+20
+0.11565962429931465
+30
+-0.021329497427588065
+11
+0.3943443042278616
+21
+0.4699505935168484
+31
+-0.02132949742758796
+12
+0.40681163485900584
+22
+0.46999311827777523
+32
+-0.02132949742758796
+13
+0.40681163485900584
+23
+0.46999311827777523
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.50132984375442
+20
+0.11565962429931465
+30
+-0.021329497427588065
+11
+0.40681163485900584
+21
+0.46999311827777523
+31
+-0.02132949742758796
+12
+0.7268738831455794
+22
+0.4699930645936956
+32
+-0.02132949742758796
+13
+0.7268738831455794
+23
+0.4699930645936956
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+0.50132984375442
+20
+0.11565962429931465
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.5030290423438137
+22
+0.11565957927510673
+32
+-0.021329497427588065
+13
+0.5030290423438137
+23
+0.11565957927510673
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.5030290423438137
+20
+0.11565957927510673
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.5124547865828502
+22
+0.11566051068828076
+32
+-0.021329497427588065
+13
+0.5124547865828502
+23
+0.11566051068828076
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.5124547865828502
+20
+0.11566051068828076
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.5172420255570696
+22
+0.11566064969066137
+32
+-0.021329497427588065
+13
+0.5172420255570696
+23
+0.11566064969066137
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.5172420255570696
+20
+0.11566064969066137
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.5259410929604285
+22
+0.11566090227696957
+32
+-0.021329497427588065
+13
+0.5259410929604285
+23
+0.11566090227696957
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.5259410929604285
+20
+0.11566090227696957
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.5300600388642229
+22
+0.11566051068827854
+32
+-0.021329497427588065
+13
+0.5300600388642229
+23
+0.11566051068827854
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.5300600388642229
+20
+0.11566051068827854
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+1.1057685335055842
+22
+0.1156993301253959
+32
+-0.021329497427588065
+13
+1.1057685335055842
+23
+0.1156993301253959
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.7296300798328395
+22
+0.4696682231644226
+32
+-0.02132949742758796
+13
+0.7296300798328395
+23
+0.4696682231644226
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+0.7296300798328395
+21
+0.4696682231644226
+31
+-0.02132949742758796
+12
+1.0855657084141692
+22
+0.4696689313614164
+32
+-0.02132949742758796
+13
+1.0855657084141692
+23
+0.4696689313614164
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+1.0855657084141692
+21
+0.4696689313614164
+31
+-0.02132949742758796
+12
+1.0865919747182853
+22
+0.469670439906691
+32
+-0.02132949742758796
+13
+1.0865919747182853
+23
+0.469670439906691
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+1.0865919747182853
+21
+0.469670439906691
+31
+-0.02132949742758796
+12
+1.157159369973707
+22
+0.46962575188848055
+32
+-0.02132949742758796
+13
+1.157159369973707
+23
+0.46962575188848055
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.1193597020926875
+22
+0.1156993272304514
+32
+-0.021329497427588065
+13
+1.1193597020926875
+23
+0.1156993272304514
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.1193597020926875
+20
+0.1156993272304514
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.1386136044693458
+22
+0.11569932282059703
+32
+-0.021329497427588065
+13
+1.1386136044693458
+23
+0.11569932282059703
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.1386136044693458
+20
+0.11569932282059703
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.1503381943269562
+22
+0.11569932003715266
+32
+-0.021329497427588065
+13
+1.1503381943269562
+23
+0.11569932003715266
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.1503381943269562
+20
+0.11569932003715266
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.155791719027395
+22
+0.11569931869118599
+32
+-0.021329497427588065
+13
+1.155791719027395
+23
+0.11569931869118599
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.155791719027395
+20
+0.11569931869118599
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.158085651441559
+22
+0.11569931808967426
+32
+-0.021329497427588065
+13
+1.158085651441559
+23
+0.11569931808967426
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.158085651441559
+20
+0.11569931808967426
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.1591044450812846
+22
+0.4692998445383917
+32
+-0.02132949742758796
+13
+1.1591044450812846
+23
+0.4692998445383917
+33
+-0.02132949742758796
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.158085651441559
+20
+0.11569931808967426
+30
+-0.021329497427588065
+11
+1.1591044450812846
+21
+0.4692998445383917
+31
+-0.02132949742758796
+12
+1.159104517712921
+22
+0.11569931776640818
+32
+-0.021329497427588065
+13
+1.159104517712921
+23
+0.11569931776640818
+33
+-0.021329497427588065
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.159104517712921
+20
+0.11569931776640818
+30
+-0.021329497427588065
+11
+1.1591044450812846
+21
+0.4692998445383917
+31
+-0.02132949742758796
+12
+1.1886405422082358
+22
+0.4640412516089145
+32
+-0.021329497427587964
+13
+1.1886405422082358
+23
+0.4640412516089145
+33
+-0.021329497427587964
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.159104517712921
+20
+0.11569931776640818
+30
+-0.021329497427588065
+11
+1.1886405422082358
+21
+0.4640412516089145
+31
+-0.021329497427587964
+12
+1.1922941387017831
+22
+0.12173074383943339
+32
+-0.021329497427588044
+13
+1.1922941387017831
+23
+0.12173074383943339
+33
+-0.021329497427588044
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.1922941387017831
+20
+0.12173074383943339
+30
+-0.021329497427588044
+11
+1.1886405422082358
+21
+0.4640412516089145
+31
+-0.021329497427587964
+12
+1.1923382645753737
+22
+0.4633074583588208
+32
+-0.021329497427587964
+13
+1.1923382645753737
+23
+0.4633074583588208
+33
+-0.021329497427587964
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.1922941387017831
+20
+0.12173074383943339
+30
+-0.021329497427588044
+11
+1.1923382645753737
+21
+0.4633074583588208
+31
+-0.021329497427587964
+12
+1.2236774151144043
+22
+0.13952109683086134
+32
+-0.021329497427588037
+13
+1.2236774151144043
+23
+0.13952109683086134
+33
+-0.021329497427588037
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.2236774151144043
+20
+0.13952109683086134
+30
+-0.021329497427588037
+11
+1.1923382645753737
+21
+0.4633074583588208
+31
+-0.021329497427587964
+12
+1.219930606861509
+22
+0.4478937548149552
+32
+-0.021329497427587968
+13
+1.219930606861509
+23
+0.4478937548149552
+33
+-0.021329497427587968
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.2236774151144043
+20
+0.13952109683086134
+30
+-0.021329497427588037
+11
+1.219930606861509
+21
+0.4478937548149552
+31
+-0.021329497427587968
+12
+1.2238034110911722
+22
+0.4454575748968931
+32
+-0.021329497427587968
+13
+1.2238034110911722
+23
+0.4454575748968931
+33
+-0.021329497427587968
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.2236774151144043
+20
+0.13952109683086134
+30
+-0.021329497427588037
+11
+1.2238034110911722
+21
+0.4454575748968931
+31
+-0.021329497427587968
+12
+1.2504634291176997
+22
+0.16751202849710456
+32
+-0.02132949742758803
+13
+1.2504634291176997
+23
+0.16751202849710456
+33
+-0.02132949742758803
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.2504634291176997
+20
+0.16751202849710456
+30
+-0.02132949742758803
+11
+1.2238034110911722
+21
+0.4454575748968931
+31
+-0.021329497427587968
+12
+1.2507989254112186
+22
+0.4173719437487061
+32
+-0.021329497427587975
+13
+1.2507989254112186
+23
+0.4173719437487061
+33
+-0.021329497427587975
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.2504634291176997
+20
+0.16751202849710456
+30
+-0.02132949742758803
+11
+1.2507989254112186
+21
+0.4173719437487061
+31
+-0.021329497427587975
+12
+1.271159922480886
+22
+0.20436827456875706
+32
+-0.02132949742758802
+13
+1.271159922480886
+23
+0.20436827456875706
+33
+-0.02132949742758802
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.271159922480886
+20
+0.20436827456875706
+30
+-0.02132949742758802
+11
+1.2507989254112186
+21
+0.4173719437487061
+31
+-0.021329497427587975
+12
+1.2712475811496826
+22
+0.3809548188019898
+32
+-0.021329497427587985
+13
+1.2712475811496826
+23
+0.3809548188019898
+33
+-0.021329497427587985
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.271159922480886
+20
+0.20436827456875706
+30
+-0.02132949742758802
+11
+1.2712475811496826
+21
+0.3809548188019898
+31
+-0.021329497427587985
+12
+1.2841162643931592
+22
+0.24722978915362082
+32
+-0.021329497427588023
+13
+1.2841162643931592
+23
+0.24722978915362082
+33
+-0.021329497427588023
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+1.2841162643931592
+20
+0.24722978915362082
+30
+-0.021329497427588023
+11
+1.2712475811496826
+21
+0.3809548188019898
+31
+-0.021329497427587985
+12
+1.2841736058160016
+22
+0.3381150408717304
+32
+-0.021329497427588
+13
+1.2841736058160016
+23
+0.3381150408717304
+33
+-0.021329497427588
+70
+13
+ 0
+3DFACE
+ 8
+palm
+10
+1.2841162643931592
+20
+0.24722978915362082
+30
+-0.021329497427588023
+11
+1.2841736058160016
+21
+0.3381150408717304
+31
+-0.021329497427588
+12
+1.288529285669313
+22
+0.2925487173065494
+32
+-0.02132949742758801
+13
+1.288529285669313
+23
+0.2925487173065494
+33
+-0.02132949742758801
+70
+1
+ 0
+LINE
+ 8
+palm
+10
+-0.40336837254389635
+20
+0.47003440299726207
+30
+-0.02132949742758796
+11
+-0.4032641176830618
+21
+0.4693396416827257
+31
+-0.029987253266541992
+ 0
+LINE
+ 8
+palm
+10
+0.012874725889247651
+20
+0.46997054580095277
+30
+-0.02132949742758796
+11
+0.012898304431331109
+21
+0.4692968438672974
+31
+-0.02998725868702286
+ 0
+LINE
+ 8
+palm
+10
+0.02923566660125987
+20
+0.4700131281459
+30
+-0.02132949742758796
+11
+0.0293145314722294
+21
+0.4693395707776401
+31
+-0.029987250044254076
+ 0
+LINE
+ 8
+palm
+10
+0.37701750679978363
+20
+0.4699931231781628
+30
+-0.02132949742758796
+11
+0.3767943786960426
+21
+0.4693395138213242
+31
+-0.02998724745586906
+ 0
+LINE
+ 8
+palm
+10
+0.3917065899222034
+20
+0.46999312076217903
+30
+-0.02132949742758796
+11
+0.3915316238299338
+21
+0.46933951140570074
+31
+-0.029987247346090977
+ 0
+LINE
+ 8
+palm
+10
+0.3943443042278616
+20
+0.4699505935168484
+30
+-0.02132949742758796
+11
+0.39417798635535983
+21
+0.4692968438672974
+31
+-0.02998725868702286
+ 0
+LINE
+ 8
+palm
+10
+0.40681163485900584
+20
+0.46999311827777523
+30
+-0.02132949742758796
+11
+0.4066861946168403
+21
+0.4693395089216774
+31
+-0.029987247233204176
+ 0
+LINE
+ 8
+palm
+10
+1.0855657084141692
+20
+0.4696689313614164
+30
+-0.02132949742758796
+11
+1.084906037085234
+21
+0.4693394175246698
+31
+-0.030006963059664236
+ 0
+LINE
+ 8
+palm
+10
+1.0865919747182853
+20
+0.469670439906691
+30
+-0.02132949742758796
+11
+1.0859329585250228
+21
+0.46933955647594505
+31
+-0.030043162032831975
+ 0
+3DFACE
+ 8
+palm
+10
+0.4285775499251552
+20
+0.11569951797502342
+30
+0.0998712621479301
+11
+0.37713358643564576
+21
+0.11569951797501443
+31
+-0.021323120946165536
+12
+0.50132984375442
+22
+0.11565962429931465
+32
+-0.021329497427588065
+13
+0.50132984375442
+23
+0.11565962429931465
+33
+-0.021329497427588065
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+0.45324313692173157
+20
+0.11569950085740732
+30
+0.10190305044442108
+11
+0.50132984375442
+21
+0.11565962429931465
+31
+-0.021329497427588065
+12
+0.5030290423438137
+22
+0.11565957927510673
+32
+-0.021329497427588065
+13
+0.5030290423438137
+23
+0.11565957927510673
+33
+-0.021329497427588065
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.50132984375442
+20
+0.11565962429931465
+30
+-0.021329497427588065
+11
+0.45324313692173157
+21
+0.11569950085740732
+31
+0.10190305044442108
+12
+0.4353642452976316
+22
+0.11569951797503464
+32
+0.11442537734154945
+13
+0.4353642452976316
+23
+0.11569951797503464
+33
+0.11442537734154945
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7110686274472025
+20
+0.11569944251109132
+30
+0.07324212630582012
+11
+1.1057685335055842
+21
+0.1156993301253959
+31
+-0.021329497427588065
+12
+1.1193597020926875
+22
+0.1156993272304514
+32
+-0.021329497427588065
+13
+1.1193597020926875
+23
+0.1156993272304514
+33
+-0.021329497427588065
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+0.7110686274472025
+21
+0.11569944251109132
+31
+0.07324212630582012
+12
+0.5742711203227493
+22
+0.11569947036484796
+32
+0.06895221585191834
+13
+0.5742711203227493
+23
+0.11569947036484796
+33
+0.06895221585191834
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.8543131342530239
+20
+0.11569941919431881
+30
+0.11448043149811093
+11
+1.1193597020926875
+21
+0.1156993272304514
+31
+-0.021329497427588065
+12
+1.1386136044693458
+22
+0.11569932282059703
+32
+-0.021329497427588065
+13
+1.1386136044693458
+23
+0.11569932282059703
+33
+-0.021329497427588065
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.1193597020926875
+20
+0.1156993272304514
+30
+-0.021329497427588065
+11
+0.8543131342530239
+21
+0.11569941919431881
+31
+0.11448043149811093
+12
+0.7110686274472025
+22
+0.11569944251109132
+32
+0.07324212630582012
+13
+0.7110686274472025
+23
+0.11569944251109132
+33
+0.07324212630582012
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.9942427643243386
+20
+0.11569940200353146
+30
+0.18985680907938893
+11
+1.1386136044693458
+21
+0.11569932282059703
+31
+-0.021329497427588065
+12
+1.1503381943269562
+22
+0.11569932003715266
+32
+-0.021329497427588065
+13
+1.1503381943269562
+23
+0.11569932003715266
+33
+-0.021329497427588065
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.1386136044693458
+20
+0.11569932282059703
+30
+-0.021329497427588065
+11
+0.9942427643243386
+21
+0.11569940200353146
+31
+0.18985680907938893
+12
+0.8543131342530239
+22
+0.11569941919431881
+32
+0.11448043149811093
+13
+0.8543131342530239
+23
+0.11569941919431881
+33
+0.11448043149811093
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.158085651441559
+21
+0.11569931808967426
+31
+-0.021329497427588065
+12
+1.159104517712921
+22
+0.11569931776640818
+32
+-0.021329497427588065
+13
+1.159104517712921
+23
+0.11569931776640818
+33
+-0.021329497427588065
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.158085651441559
+20
+0.11569931808967426
+30
+-0.021329497427588065
+11
+1.5940743769374797
+21
+0.11569951797502342
+31
+1.5695940780014193
+12
+1.3466706909373627
+22
+0.11569941023242802
+32
+0.703371831037376
+13
+1.3466706909373627
+23
+0.11569941023242802
+33
+0.703371831037376
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+-0.39603457201367
+21
+-0.3913563992408881
+31
+0.11999794324711321
+12
+-0.007740620010602495
+22
+-0.12015698930892682
+32
+-0.021329497427588134
+13
+-0.007740620010602495
+23
+-0.12015698930892682
+33
+-0.021329497427588134
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.39603457201367
+20
+-0.3913563992408881
+30
+0.11999794324711321
+11
+0.37713358643564576
+21
+0.11569951797501443
+31
+-0.021323120946165536
+12
+-0.33918758135853855
+22
+-0.3913563992408814
+32
+0.26808941696355065
+13
+-0.33918758135853855
+23
+-0.3913563992408814
+33
+0.26808941696355065
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.226889266259492
+20
+0.11569939018870201
+30
+0.4205002886903231
+11
+1.155791719027395
+21
+0.11569931869118599
+31
+-0.021329497427588065
+12
+1.158085651441559
+22
+0.11569931808967426
+32
+-0.021329497427588065
+13
+1.158085651441559
+23
+0.11569931808967426
+33
+-0.021329497427588065
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.155791719027395
+20
+0.11569931869118599
+30
+-0.021329497427588065
+11
+1.226889266259492
+21
+0.11569939018870201
+31
+0.4205002886903231
+12
+1.1213215446161924
+22
+0.11569939211025415
+32
+0.2942344834828935
+13
+1.1213215446161924
+23
+0.11569939211025415
+33
+0.2942344834828935
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.4478093070099276
+21
+-0.39135639905742076
+31
+-0.02132949742758821
+12
+-0.44530211084188664
+22
+-0.39135639947577183
+32
+-0.02132949742758821
+13
+-0.44530211084188664
+23
+-0.39135639947577183
+33
+-0.02132949742758821
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4478093070099276
+20
+-0.39135639905742076
+30
+-0.02132949742758821
+11
+0.5001766908782079
+21
+-0.39135649292046104
+31
+3.4231078613655503
+12
+-0.4974274817566946
+22
+-0.39135632940056486
+32
+3.2656518472615215
+13
+-0.4974274817566946
+23
+-0.39135632940056486
+33
+3.2656518472615215
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.1213215446161924
+20
+0.11569939211025415
+30
+0.2942344834828935
+11
+1.1503381943269562
+21
+0.11569932003715266
+31
+-0.021329497427588065
+12
+1.155791719027395
+22
+0.11569931869118599
+32
+-0.021329497427588065
+13
+1.155791719027395
+23
+0.11569931869118599
+33
+-0.021329497427588065
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.1503381943269562
+20
+0.11569932003715266
+30
+-0.021329497427588065
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+0.9942427643243386
+22
+0.11569940200353146
+32
+0.18985680907938893
+13
+0.9942427643243386
+23
+0.11569940200353146
+33
+0.18985680907938893
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.4736624457345466
+20
+-0.3913561693833688
+30
+2.907315266711703
+11
+-1.1336673204778431
+21
+-0.39135622511284507
+31
+-0.02132949742758821
+12
+-1.1319509208062501
+22
+-0.3913562253941859
+32
+-0.02132949742758821
+13
+-1.1319509208062501
+23
+-0.3913562253941859
+33
+-0.02132949742758821
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1336673204778431
+20
+-0.39135622511284507
+30
+-0.02132949742758821
+11
+-1.4736624457345466
+21
+-0.3913561693833688
+31
+2.907315266711703
+12
+-1.5933228224247524
+22
+-0.39135614976952593
+32
+1.4382238099822164
+13
+-1.5933228224247524
+23
+-0.39135614976952593
+33
+1.4382238099822164
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.4974274817566946
+20
+-0.39135632940056486
+30
+3.2656518472615215
+11
+-1.1319509208062501
+21
+-0.3913562253941859
+31
+-0.02132949742758821
+12
+-1.1292764794541248
+22
+-0.3913562258325619
+32
+-0.02132949742758821
+13
+-1.1292764794541248
+23
+-0.3913562258325619
+33
+-0.02132949742758821
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1319509208062501
+20
+-0.3913562253941859
+30
+-0.02132949742758821
+11
+-0.4974274817566946
+21
+-0.39135632940056486
+31
+3.2656518472615215
+12
+-1.4736624457345466
+22
+-0.3913561693833688
+32
+2.907315266711703
+13
+-1.4736624457345466
+23
+-0.3913561693833688
+33
+2.907315266711703
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.5030290423438137
+21
+0.11565957927510673
+31
+-0.021329497427588065
+12
+0.5124547865828502
+22
+0.11566051068828076
+32
+-0.021329497427588065
+13
+0.5124547865828502
+23
+0.11566051068828076
+33
+-0.021329497427588065
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.5030290423438137
+20
+0.11565957927510673
+30
+-0.021329497427588065
+11
+0.5742711203227493
+21
+0.11569947036484796
+31
+0.06895221585191834
+12
+0.45324313692173157
+22
+0.11569950085740732
+32
+0.10190305044442108
+13
+0.45324313692173157
+23
+0.11569950085740732
+33
+0.10190305044442108
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.70094493989614
+20
+0.2541658577595415
+30
+1.4087246449502895
+11
+-1.2291257442446226
+21
+0.34329376805461653
+31
+-0.021329497427588
+12
+-1.250660927301903
+22
+0.2535397136991191
+32
+-0.021329497427588023
+13
+-1.250660927301903
+23
+0.2535397136991191
+33
+-0.021329497427588023
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2291257442446226
+20
+0.34329376805461653
+30
+-0.021329497427588
+11
+-1.70094493989614
+21
+0.2541658577595415
+31
+1.4087246449502895
+12
+-1.6811958793467983
+22
+0.34329384219633086
+32
+1.4141378425934268
+13
+-1.6811958793467983
+23
+0.34329384219633086
+33
+1.4141378425934268
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.4285775499251552
+20
+0.11569951797502342
+30
+0.0998712621479301
+11
+-0.33918758135853855
+21
+-0.3913563992408814
+31
+0.26808941696355065
+12
+0.37713358643564576
+22
+0.11569951797501443
+32
+-0.021323120946165536
+13
+0.37713358643564576
+23
+0.11569951797501443
+33
+-0.021323120946165536
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.33918758135853855
+20
+-0.3913563992408814
+30
+0.26808941696355065
+11
+0.4285775499251552
+21
+0.11569951797502342
+31
+0.0998712621479301
+12
+-0.27720690245551616
+22
+-0.3913563992408904
+32
+0.4141067459925812
+13
+-0.27720690245551616
+23
+-0.3913563992408904
+33
+0.4141067459925812
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.625486635239021
+20
+-0.37669239221898876
+30
+1.4294077340431905
+11
+-1.2011666950222017
+21
+-0.3337005154197999
+31
+-0.021329497427588197
+12
+-1.1684015342793297
+22
+-0.37677893650277927
+32
+-0.02132949742758821
+13
+-1.1684015342793297
+23
+-0.37677893650277927
+33
+-0.02132949742758821
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2011666950222017
+20
+-0.3337005154197999
+30
+-0.021329497427588197
+11
+-1.625486635239021
+21
+-0.37669239221898876
+31
+1.4294077340431905
+12
+-1.65545853255605
+22
+-0.333700440955652
+32
+1.421192459110173
+13
+-1.65545853255605
+23
+-0.333700440955652
+33
+1.421192459110173
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.65545853255605
+20
+-0.333700440955652
+30
+1.421192459110173
+11
+-1.2291258441147315
+21
+-0.26531020051043686
+31
+-0.021329497427588155
+12
+-1.2011666950222017
+22
+-0.3337005154197999
+32
+-0.021329497427588197
+13
+-1.2011666950222017
+23
+-0.3337005154197999
+33
+-0.021329497427588197
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2291258441147315
+20
+-0.26531020051043686
+30
+-0.021329497427588155
+11
+-1.65545853255605
+21
+-0.333700440955652
+31
+1.421192459110173
+12
+-1.6811959791046571
+22
+-0.2653101264104666
+32
+1.4141378425934237
+13
+-1.6811959791046571
+23
+-0.2653101264104666
+33
+1.4141378425934237
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.6811959791046571
+20
+-0.2653101264104666
+30
+1.4141378425934237
+11
+-1.2505796477668625
+21
+-0.1761822093199848
+31
+-0.021329497427588127
+12
+-1.2291258441147315
+22
+-0.26531020051043686
+32
+-0.021329497427588155
+13
+-1.2291258441147315
+23
+-0.26531020051043686
+33
+-0.021329497427588155
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2505796477668625
+20
+-0.1761822093199848
+30
+-0.021329497427588127
+11
+-1.6811959791046571
+21
+-0.2653101264104666
+31
+1.4141378425934237
+12
+-1.7009450104355979
+22
+-0.17618213549941947
+32
+1.4087246449502893
+13
+-1.7009450104355979
+23
+-0.17618213549941947
+33
+1.4087246449502893
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7009450104355979
+20
+-0.17618213549941947
+30
+1.4087246449502893
+11
+-1.2640660647138675
+21
+-0.07239046715696767
+31
+-0.021329497427588117
+12
+-1.2505796477668625
+22
+-0.1761822093199848
+32
+-0.021329497427588127
+13
+-1.2505796477668625
+23
+-0.1761822093199848
+33
+-0.021329497427588127
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2640660647138675
+20
+-0.07239046715696767
+30
+-0.021329497427588117
+11
+-1.7009450104355979
+21
+-0.17618213549941947
+31
+1.4087246449502893
+12
+-1.7133597627005268
+22
+-0.07239039351207949
+32
+1.405321766654406
+13
+-1.7133597627005268
+23
+-0.07239039351207949
+33
+1.405321766654406
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7148013652171186
+20
+-0.2589393880700495
+30
+0.36354132201196915
+11
+0.4353642452976316
+21
+0.11569951797503464
+31
+0.11442537734154945
+12
+0.45324313692173157
+22
+0.11569950085740732
+32
+0.10190305044442108
+13
+0.45324313692173157
+23
+0.11569950085740732
+33
+0.10190305044442108
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.4353642452976316
+20
+0.11569951797503464
+30
+0.11442537734154945
+11
+0.7148013652171186
+21
+-0.2589393880700495
+31
+0.36354132201196915
+12
+0.40683149306505695
+22
+0.08212027273578515
+32
+0.1742805040831692
+13
+0.40683149306505695
+23
+0.08212027273578515
+33
+0.1742805040831692
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.40683149306505695
+20
+0.08212027273578515
+30
+0.1742805040831692
+11
+0.7148013652171186
+21
+-0.2589393880700495
+31
+0.36354132201196915
+12
+0.3919244872289036
+22
+0.06457671434803919
+32
+0.2055519607021757
+13
+0.3919244872289036
+23
+0.06457671434803919
+33
+0.2055519607021757
+70
+3
+ 0
+3DFACE
+ 8
+palm
+10
+0.3919244872289036
+20
+0.06457671434803919
+30
+0.2055519607021757
+11
+0.7148013652171186
+21
+-0.2589393880700495
+31
+0.36354132201196915
+12
+0.6154331324746154
+22
+-0.25556244191651595
+32
+0.4291290051087077
+13
+0.6154331324746154
+23
+-0.25556244191651595
+33
+0.4291290051087077
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.1591044450812846
+21
+0.4692998445383917
+31
+-0.02132949742758796
+12
+1.157159369973707
+22
+0.46962575188848055
+32
+-0.02132949742758796
+13
+1.157159369973707
+23
+0.46962575188848055
+33
+-0.02132949742758796
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+1.1591044450812846
+20
+0.4692998445383917
+30
+-0.02132949742758796
+11
+1.2851012666870065
+21
+0.5693393649383878
+31
+2.603406296512527
+12
+1.5940745180163998
+22
+0.4698512386274375
+32
+1.569594078001374
+13
+1.5940745180163998
+23
+0.4698512386274375
+33
+1.569594078001374
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.7296300798328395
+21
+0.4696682231644226
+31
+-0.02132949742758796
+12
+0.7268738831455794
+22
+0.4699930645936956
+32
+-0.02132949742758796
+13
+0.7268738831455794
+23
+0.4699930645936956
+33
+-0.02132949742758796
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.7296300798328395
+20
+0.4696682231644226
+30
+-0.02132949742758796
+11
+0.4450700509834469
+21
+0.6693395026301509
+31
+2.619224993234204
+12
+1.2851012666870065
+22
+0.5693393649383878
+32
+2.603406296512527
+13
+1.2851012666870065
+23
+0.5693393649383878
+33
+2.603406296512527
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.005897113385843644
+20
+0.6693395746160492
+30
+2.540767132815593
+11
+0.30393240840636637
+21
+0.46999313439481716
+31
+-0.02132949742758796
+12
+0.30246749279966134
+22
+0.4700130823729538
+32
+-0.02132949742758796
+13
+0.30246749279966134
+23
+0.4700130823729538
+33
+-0.02132949742758796
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+0.30393240840636637
+20
+0.46999313439481716
+30
+-0.02132949742758796
+11
+0.005897113385843644
+21
+0.6693395746160492
+31
+2.540767132815593
+12
+0.4450700509834469
+22
+0.6693395026301509
+32
+2.619224993234204
+13
+0.4450700509834469
+23
+0.6693395026301509
+33
+2.619224993234204
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7175941910489623
+20
+0.038991863859061116
+30
+1.404161108238109
+11
+-1.2640660281999483
+21
+0.150374046197144
+31
+-0.021329497427588058
+12
+-1.2686660179281843
+22
+0.03899179027408667
+32
+-0.021329497427588086
+13
+-1.2686660179281843
+23
+0.03899179027408667
+33
+-0.021329497427588086
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2640660281999483
+20
+0.150374046197144
+30
+-0.021329497427588058
+11
+-1.7175941910489623
+21
+0.038991863859061116
+31
+1.404161108238109
+12
+-1.7133597261865965
+22
+0.15037411984202997
+32
+1.4053217666544113
+13
+-1.7133597261865965
+23
+0.15037411984202997
+33
+1.4053217666544113
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.7133597627005268
+20
+-0.07239039351207949
+30
+1.405321766654406
+11
+-1.2686660179281843
+21
+0.03899179027408667
+31
+-0.021329497427588086
+12
+-1.2640660647138675
+22
+-0.07239046715696767
+32
+-0.021329497427588117
+13
+-1.2640660647138675
+23
+-0.07239046715696767
+33
+-0.021329497427588117
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2686660179281843
+20
+0.03899179027408667
+30
+-0.021329497427588086
+11
+-1.7133597627005268
+21
+-0.07239039351207949
+31
+1.405321766654406
+12
+-1.7175941910489623
+22
+0.038991863859061116
+32
+1.404161108238109
+13
+-1.7175941910489623
+23
+0.038991863859061116
+33
+1.404161108238109
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.433275824211661
+20
+0.6693396466020395
+30
+2.4623092723969795
+11
+-0.27212184387072247
+21
+0.47001317722134817
+31
+-0.02132949742758796
+12
+-0.2736178696594298
+22
+0.4700343811409351
+32
+-0.02132949742758796
+13
+-0.2736178696594298
+23
+0.4700343811409351
+33
+-0.02132949742758796
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.27212184387072247
+20
+0.47001317722134817
+30
+-0.02132949742758796
+11
+-0.433275824211661
+21
+0.6693396466020395
+31
+2.4623092723969795
+12
+0.005897113385843644
+22
+0.6693395746160492
+32
+2.540767132815593
+13
+0.005897113385843644
+23
+0.6693395746160492
+33
+2.540767132815593
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2344292513491493
+20
+0.5693397779211644
+30
+2.1309506849853554
+11
+-0.7010674590880783
+21
+0.4700344517163295
+31
+-0.02132949742758796
+12
+-0.7041341214652392
+22
+0.4697403390103124
+32
+-0.02132949742758796
+13
+-0.7041341214652392
+23
+0.4697403390103124
+33
+-0.02132949742758796
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-0.7010674590880783
+20
+0.4700344517163295
+30
+-0.02132949742758796
+11
+-1.2344292513491493
+21
+0.5693397779211644
+31
+2.1309506849853554
+12
+-0.433275824211661
+22
+0.6693396466020395
+32
+2.4623092723969795
+13
+-0.433275824211661
+23
+0.6693396466020395
+33
+2.4623092723969795
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.5933226813458456
+20
+0.4693398367483087
+30
+1.438223809982218
+11
+-1.1313553663027527
+21
+0.46969766418759396
+31
+-0.02132949742758796
+12
+-1.1336673196459368
+22
+0.4692970973881342
+32
+-0.02132949742758796
+13
+-1.1336673196459368
+23
+0.4692970973881342
+33
+-0.02132949742758796
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.1313553663027527
+20
+0.46969766418759396
+30
+-0.02132949742758796
+11
+-1.5933226813458456
+21
+0.4693398367483087
+31
+1.438223809982218
+12
+-1.2344292513491493
+22
+0.5693397779211644
+32
+2.1309506849853554
+13
+-1.2344292513491493
+23
+0.5693397779211644
+33
+2.1309506849853554
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.6811958793467983
+20
+0.34329384219633086
+30
+1.4141378425934268
+11
+-1.2011665727838676
+21
+0.41168407379832106
+31
+-0.021329497427587975
+12
+-1.2291257442446226
+22
+0.34329376805461653
+32
+-0.021329497427588
+13
+-1.2291257442446226
+23
+0.34329376805461653
+33
+-0.021329497427588
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.2011665727838676
+20
+0.41168407379832106
+30
+-0.021329497427587975
+11
+-1.6811958793467983
+21
+0.34329384219633086
+31
+1.4141378425934268
+12
+-1.6554584103781642
+22
+0.4116841483041124
+32
+1.4211924591101657
+13
+-1.6554584103781642
+23
+0.4116841483041124
+33
+1.4211924591101657
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.6554584103781642
+20
+0.4116841483041124
+30
+1.4211924591101657
+11
+-1.168401397979206
+21
+0.45476248418163134
+31
+-0.021329497427587947
+12
+-1.2011665727838676
+22
+0.41168407379832106
+32
+-0.021329497427587975
+13
+-1.2011665727838676
+23
+0.41168407379832106
+33
+-0.021329497427587975
+70
+1
+ 0
+3DFACE
+ 8
+palm
+10
+-1.168401397979206
+20
+0.45476248418163134
+30
+-0.021329497427587947
+11
+-1.6554584103781642
+21
+0.4116841483041124
+31
+1.4211924591101657
+12
+-1.6254864989672675
+22
+0.4546760897419495
+32
+1.4294077340431952
+13
+-1.6254864989672675
+23
+0.4546760897419495
+33
+1.4294077340431952
+70
+1
+ 0
+LINE
+ 8
+palm
+10
+1.1567374333163143
+20
+0.11569931667688083
+30
+-0.02998722460508882
+11
+1.1057685335055842
+21
+0.1156993301253959
+31
+-0.021329497427588065
+ 0
+LINE
+ 8
+palm
+10
+-0.4476786151194132
+20
+-0.3913563992408948
+30
+-0.029987248507749635
+11
+-0.4478093070099276
+21
+-0.39135639905742076
+31
+-0.02132949742758821
+ 0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.39603457201367
+21
+-0.3913563992408881
+31
+0.11999794324711321
+12
+-0.33918758135853855
+22
+-0.3913563992408814
+32
+0.26808941696355065
+13
+-0.33918758135853855
+23
+-0.3913563992408814
+33
+0.26808941696355065
+70
+0
+ 0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.1922941387017831
+21
+0.12173074383943339
+31
+-0.021329497427588044
+12
+1.6267999741316135
+22
+0.12174651827402361
+32
+1.5677580014049102
+13
+1.6267999741316135
+23
+0.12174651827402361
+33
+1.5677580014049102
+70
+0
+ 0
+ENDSEC
+ 0
+EOF
diff --git a/hacks/glx/handsy.man b/hacks/glx/handsy.man
new file mode 100644
index 0000000..c8143db
--- /dev/null
+++ b/hacks/glx/handsy.man
@@ -0,0 +1,76 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+handsy - some hands.
+.SH SYNOPSIS
+.B handsy
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-count \fInumber\fP]
+[\-no-wander]
+[\-no-spin]
+[\-no-front]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+A set of robotic hands communicate non-verbally.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
+.TP 8
+.B \-speed \fInumber\fP
+Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
+.TP 8
+.B \-count \fInumber\fP
+Number of hands. 1 - 50. Default: 2.
+.TP 8
+.B \-wander | \-no-wander
+Whether the hands should wander around the screen.
+.TP 8
+.B \-spin | \-no-spin
+Whether the object should spin.
+.TP 8
+.B \-front | \-no-front
+Whether to spin all the way around. Default: no.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2018 by Jamie Zawinski. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/handsy_anim.h b/hacks/glx/handsy_anim.h
new file mode 100644
index 0000000..f56ae36
--- /dev/null
+++ b/hacks/glx/handsy_anim.h
@@ -0,0 +1,805 @@
+/* handsy, Copyright (c) 2018 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * Handsy's various animation key-frames. I made these by "hand" with -debug.
+ *
+ * I considered using the Leap Motion Controller API to snapshot real hands,
+ * but that device is crap at detecting poses with any precision.
+ */
+
+#ifndef __HANDSY_ANIM__
+#define __HANDSY_ANIM__
+
+/* For reference:
+
+ hand { joint { thumb { distal, proximal, metacarpal, 0 }
+ index { distal, intermediate, proximal, metacarpal }
+ middle { distal, intermediate, proximal, metacarpal }
+ ring { distal, intermediate, proximal, metacarpal }
+ pinky { distal, intermediate, proximal, metacarpal }}
+ base { thumb, index, middle, ring, pinky }
+ wrist { Z, X, rot }
+ pos { X, Y, Z }}
+ duration, pause
+ pos[3], rot[3]
+ */
+
+/**************************************************************************/
+
+#define NNN 1.8
+
+static const hand open_palm = {
+ {{ 0.20, 0.20, 0.20, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 }},
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand closed_hand = {
+ {{ 0.86, 1.60, 0, 0 },
+ { 1.60, 1.60, 1.60, 0 },
+ { 1.60, 1.60, 1.60, 0 },
+ { 1.60, 1.60, 1.60, 0 },
+ { 1.60, 1.60, 1.60, 0 }},
+ { -1.70, 0, 0, 0, 0 },
+ { 0.78, 0, 0 },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand closed_flat = {
+ {{ 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 }},
+ { 0, 0, 0, 0, 0 },
+ { 1.68, 0, 0 },
+ { 0, 0, -0.08 },
+ True
+};
+
+static const hand open_wide = {
+ {{ 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 }},
+ { 0, -0.25, -0.08, 0.08, 0.25 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand_anim closed_flat_anim[] = {
+ { &closed_flat, NNN, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+ { 0, }};
+
+static const hand_anim hidden_anim[] = {
+ { &closed_flat, NNN, 0, { 0, 0, -0.5 }, { 0, 0, 0 }},
+ { 0, }};
+
+static const hand_anim wave_anim[] = {
+ { &open_palm, NNN, 0.5, { -0.1, 0, 0 }, { 0, 0, 0 }},
+ { &open_palm, 0.05, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+ { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, 0.90, 0 }},
+ { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+ { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, 0.90, 0 }},
+ { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+ { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, 0.90, 0 }},
+ { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+ { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, 0.90, 0 }},
+ { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+ { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, 0.90, 0 }},
+ { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+ { &open_palm, 0.05, 1, { -0.1, 0, 0 }, { 0, 0, 0 }},
+ { 0, }};
+
+static const hand_anim wave2_anim[] = {
+ { &open_palm, NNN, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &open_palm, 0.2, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &open_palm, 0.2, 0, { 0, 0, 0 }, { 1.3, 0, 0 }},
+ { &open_palm, 0.2, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &open_palm, 0.2, 0, { 0, 0, 0 }, { 1.3, 0, 0 }},
+ { &open_palm, 0.2, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &open_palm, 0.2, 0, { 0, 0, 0 }, { 1.3, 0, 0 }},
+ { &open_palm, 0.2, 1, { 0, 0, 0 }, { 0, 0.0, 0 }},
+ { 0, }};
+
+static const hand_anim jazzhands_anim[] = {
+ { &open_palm, NNN, 0.5, { -0.1, 0, 0 }, { 0, 0, 0 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0 }, { 0, 0.35, -M_PI/4 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0.1 }, { 0, 0.90, 0 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0.2 }, { 0, 0.35, -M_PI/4 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0.3 }, { 0, 0.90, 0 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0.4 }, { 0, 0.35, -M_PI/4 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0.4 }, { 0, 0.90, 0 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0.4 }, { 0, 0.35, -M_PI/4 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0.4 }, { 0, 0.90, 0 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0.3 }, { 0, 0.35, -M_PI/4 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0.2 }, { 0, 0.90, 0 }},
+ { &open_palm, 0.04, 0, { -0.1, 0, 0.1 }, { 0, 0.35, -M_PI/4 }},
+ { &open_palm, 0.04, 1, { -0.1, 0, 0 }, { 0, 0.35, -M_PI/4 }},
+ { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_clap1 = {
+ {{ 0.20, 0.20, 0.20, 0 },
+ { 0, -0.10, -0.10, 0 },
+ { 0, -0.10, -0.10, 0 },
+ { 0, -0.10, -0.10, 0 },
+ { 0, -0.10, -0.10, 0 }},
+ { 0, 0, 0, 0, 0 },
+ { 0, 0.9, 0 },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand_anim clap_anim[] = {
+ { &open_palm, NNN, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.1, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.1, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.1, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.1, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.1, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.1, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.1, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.1, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.1, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.1, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { 0, }};
+
+static const hand_anim slow_clap_anim[] = {
+ { &open_palm, NNN, 1, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 1, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.4, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 1, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.4, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 1, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.4, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 1, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.4, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { &hand_clap1, 0.1, 1, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &open_palm, 0.4, 0, { -0.3, 0, 0 }, { 0, 0, -M_PI/2 }},
+ { 0, }};
+
+static const hand_anim pray_anim[] = {
+ { &hand_clap1, NNN, 0, { 0, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { &hand_clap1, 0.2, 2.5, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+ { 0, }};
+
+
+/**************************************************************************/
+
+static const hand middle_finger = {
+ {{ 0.70, 0.70, 0, 0 },
+ { 1.60, 1.60, 1.60, 0 },
+ { 0, 0, 0, 0 },
+ { 1.40, 1.40, 1.40, 0 },
+ { 1.60, 1.60, 1.60, 0 }},
+ { 0, 0, 0, 0, 0 },
+ { -0.04, 0.06, -2.90 },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand_anim middle_anim[] = {
+ { &middle_finger, NNN, 1, { 0, 0, 0.0 }, { 0, 0, 0 }},
+ { &middle_finger, 0.2, 0, { 0, 0, 0.3 }, { 0, 0.2, 0 }},
+ { &middle_finger, 0.2, 0, { 0, 0, 0.0 }, { 0, 0, 0 }},
+ { &middle_finger, 0.2, 0, { 0, 0, 0.3 }, { 0, -0.2, 0 }},
+ { &middle_finger, 0.2, 0, { 0, 0, 0.0 }, { 0, 0, 0 }},
+ { &middle_finger, 0.2, 0, { 0, 0, 0.3 }, { 0, 0.2, 0 }},
+ { &middle_finger, 0.2, 0, { 0, 0, 0.0 }, { 0, 0, 0 }},
+ { &middle_finger, 0.2, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+ { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_ok = {
+ {{ 0.87, 0.32, 0.02, 0 },
+ { 0.88, 0.91, 0.93, 0 },
+ { 0, 0.32, 0.32, 0 },
+ { 0, 0.02, 0.02, 0 },
+ { -0.20, -0.20, -0.20, 0 }},
+ { -0.92, -0.03, -0.06, 0.10, 0.25 },
+ { -0.04, 0.06, -2.90 },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand hand_pointing = {
+ {{ 0.87, 0.32, 0.02, 0 },
+ { 0, 0, 0, 0 },
+ { 0.8, 1.60, 1.60, 0 },
+ { 0.8, 1.60, 1.60, 0 },
+ { 0.8, 1.60, 1.60, 0 }},
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand_anim ok_anim[] = {
+ { &hand_ok, NNN, 1, { 0, 0, 0 }, { 0, 0, M_PI/2 }},
+ { 0, }};
+
+static const hand_anim inout1_anim[] = {
+ { &hand_ok, NNN, 1, { 0.3, 0.34, 0.4 }, { M_PI/2, 0, M_PI }},
+ { 0, }};
+
+static const hand_anim inout2_anim[] = {
+ { &hand_pointing, NNN, 1, { -0.8, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+ { &hand_pointing, 0.2, 0, { -0.1, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+ { &hand_pointing, 0.2, 0, { -0.8, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+ { &hand_pointing, 0.2, 0, { -0.1, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+ { &hand_pointing, 0.2, 0, { -0.8, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+ { &hand_pointing, 0.2, 0, { -0.1, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+ { &hand_pointing, 0.2, 0, { -0.8, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+ { &hand_pointing, 0.2, 0, { -0.1, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+ { &hand_pointing, 0.2, 1, { -0.8, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+ { 0, }};
+
+
+/**************************************************************************/
+
+static const hand tap0 = {
+ {{ 0, 0, 0, 0 },
+ { 0.06, 0.06, 0.06, 0 },
+ { 0.04, 0.04, 0.04, 0 },
+ { 0.04, 0.04, 0.04, 0 },
+ { 0.02, 0.02, 0.02, 0 }},
+ { 0, -0.25, -0.06, 0.10, 0.25 },
+ { 1.06, 0.10, 0 },
+ { 0, -0.10, 0.04 },
+ True
+};
+static const hand tap1 = {
+ {{ 0, 0, 0, 0 },
+ { 0.06, 0.06, 0.06, 0 },
+ { 0.04, 0.04, 0.04, 0 },
+ { 0.24, 0.24, 0.24, 0 },
+ { 0.60, 0.60, 0.60, 0 }},
+ { 0, -0.25, -0.06, 0.10, 0.25 },
+ { 1.06, 0.10, 0 },
+ { 0, -0.10, 0.04 },
+ True
+};
+static const hand tap2 = {
+ {{ 0, 0, 0, 0 },
+ { 0.06, 0.06, 0.06, 0 },
+ { 0.30, 0.30, 0.30, 0 },
+ { 0.66, 0.66, 0.66, 0 },
+ { 0.60, 0.60, 0.60, 0 }},
+ { 0, -0.25, -0.06, 0.10, 0.25 },
+ { 1.06, 0.10, 0 },
+ { 0, -0.10, 0.04 },
+ True
+};
+static const hand tap3 = {
+ {{ 0, 0, 0, 0 },
+ { 0.26, 0.26, 0.26, 0 },
+ { 0.71, 0.71, 0.71, 0 },
+ { 0.66, 0.66, 0.66, 0 },
+ { 0.60, 0.60, 0.60, 0 }},
+ { -0.10, -0.25, -0.06, 0.10, 0.25 },
+ { 1.06, 0.10, 0 },
+ { 0, -0.10, 0.04 },
+ True
+};
+static const hand tap4 = {
+ {{ 0, 0, 0, 0 },
+ { 0.72, 0.72, 0.72, 0 },
+ { 0.71, 0.71, 0.71, 0 },
+ { 0.66, 0.66, 0.66, 0 },
+ { 0.60, 0.60, 0.60, 0 }},
+ { -0.20, -0.25, -0.06, 0.10, 0.25 },
+ { 1.06, 0.10, 0 },
+ { 0, -0.10, 0.04 },
+ True
+};
+static const hand tap5 = {
+ {{ 0, 0, 0, 0 },
+ { 0.72, 0.72, 0.72, 0 },
+ { 0.71, 0.71, 0.71, 0 },
+ { 0.66, 0.66, 0.66, 0 },
+ { 0.60, 0.60, 0.60, 0 }},
+ { -0.50, -0.25, -0.06, 0.10, 0.25 },
+ { 1.06, 0.10, 0 },
+ { 0, -0.10, 0.04 },
+ True
+};
+
+static const hand_anim tap_anim[] = {
+ { &tap5, NNN, 0.5, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+ { &tap0, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap1, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap2, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap3, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap4, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+ { &tap0, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap1, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap2, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap3, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap4, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+ { &tap0, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap1, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap2, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap3, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap4, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+ { &tap0, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap1, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap2, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap3, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap4, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+ { &tap0, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap1, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap2, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap3, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap4, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+ { &tap0, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap1, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap2, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap3, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap4, 0.13, 0, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+ { 0, }};
+
+
+/**************************************************************************/
+
+static const hand hand_spock = {
+ {{ 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 }},
+ { 0.00, -0.13, -0.25, 0.25, 0.11 },
+ { 0, 0.10, 0 },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand_anim spock_anim[] = {
+ { &hand_spock, NNN, 1.5, { 0, 0, 0.1 }, { 0, 0, 0 } },
+ { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_horns = {
+ {{ 0, 1.30, 1.30, 0 },
+ { 0, 0, 0, 0 },
+ { 0.70, 1.60, 1.60, 0 },
+ { 0.70, 1.60, 1.60, 0 },
+ { 0, 0, 0, 0 }},
+ { -1.50, -0.25, 0, 0, 0.25 },
+ { 0, 0.10, 0 },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand_anim horns_anim[] = {
+ { &hand_horns, NNN, 1.5, { 0, 0, 0.1 }, { 0, 0, 0 } },
+ { &hand_horns, 0.3, 0, { 0, 0, 0.1 }, { 0.7, 0, 0 } },
+ { &hand_horns, 0.3, 0, { 0, 0, 0.1 }, { 0, 0, 0 } },
+ { &hand_horns, 0.3, 0, { 0, 0, 0.1 }, { 0.7, 0, 0 } },
+ { &hand_horns, 0.3, 0.3, { 0, 0, 0.1 }, { 0, 0, 0 } },
+ { 0, }};
+
+/**************************************************************************/
+
+static const hand_anim bs1_anim[] = {
+ { &hand_horns, NNN, 1, { 0.2, 0, 0 }, { 0, M_PI/4, M_PI/2 }},
+ { 0, }};
+
+static const hand_anim bs2_anim[] = {
+ { &closed_hand, NNN, 1, { 0.2, 0, 0 }, { M_PI/4, 0, M_PI/2 }},
+ { &open_wide, 0.3, 0, { 0.2, 0, 0 }, { M_PI, 0, M_PI/2 }},
+ { &closed_hand, 0.3, 0, { 0.2, 0, 0 }, { M_PI/4, 0, M_PI/2 }},
+ { &open_wide, 0.3, 0, { 0.2, 0, 0 }, { M_PI, 0, M_PI/2 }},
+ { &closed_hand, 0.3, 0, { 0.2, 0, 0 }, { M_PI/4, 0, M_PI/2 }},
+ { &open_wide, 0.3, 0, { 0.2, 0, 0 }, { M_PI, 0, M_PI/2 }},
+ { &closed_hand, 0.3, 1, { 0.2, 0, 0 }, { M_PI/4, 0, M_PI/2 }},
+ { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_v = {
+ {{ 0, 1.60, 1.60, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 1.60, 1.60, 1.60, 0 },
+ { 1.60, 1.60, 1.60, 0 }},
+ { -0.80, -0.22, 0.25, 0, 0 },
+ { 0, 0, -M_PI },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand_anim upyours_anim[] = {
+ { &hand_v, NNN, 1, { 0, 0, 0.0 }, { 0, 0, 0 }},
+ { &hand_v, 0.2, 0, { 0, 0, 0.3 }, { 0, 0.2, 0 }},
+ { &hand_v, 0.2, 0, { 0, 0, 0.0 }, { 0, 0, 0 }},
+ { &hand_v, 0.2, 0, { 0, 0, 0.3 }, { 0, 0.2, 0 }},
+ { &hand_v, 0.2, 1, { 0, 0, 0.0 }, { 0, 0, 0 }},
+ { 0, }};
+
+static const hand_anim peace_anim[] = {
+ { &hand_v, NNN, 0.0, { 0, 0, 0 }, { 0, 0, M_PI }},
+ { &hand_v, 0.3, 0.2, { 0, 0, 0 }, { 0, -0.2, M_PI }},
+ { &hand_v, 0.8, 2.2, { 0, 0, 0 }, { 0, 0.7, M_PI }},
+ { 0, }};
+
+static const hand_anim scissor1_anim[] = {
+ { &hand_v, NNN, 1, { -0.2, 0, 0 }, { M_PI, 0, M_PI }},
+ { &hand_v, 0.5, 1, { -0.5, 0, 0 }, { M_PI/2, 0, M_PI/2 }},
+ { &hand_v, 0.2, 0, { 0, 0, 0 }, { M_PI/2, 0, M_PI/2 }},
+ { &hand_v, 0.2, 0, { -0.2, 0, 0 }, { M_PI/2, 0, M_PI/2 }},
+ { &hand_v, 0.2, 0, { 0, 0, 0 }, { M_PI/2, 0, M_PI/2 }},
+ { &hand_v, 0.2, 0, { -0.2, 0, 0 }, { M_PI/2, 0, M_PI/2 }},
+ { &hand_v, 0.2, 0, { 0, 0, 0 }, { M_PI/2, 0, M_PI/2 }},
+ { 0, }};
+
+static const hand_anim scissor2_anim[] = {
+ { &hand_v, NNN, 1, { -0.2, 0, 0 }, { M_PI, 0, M_PI }},
+ { &hand_v, 0.5, 1, { -0.5, 0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+ { &hand_v, 0.2, 0, { 0, 0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+ { &hand_v, 0.2, 0, { -0.2, 0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+ { &hand_v, 0.2, 0, { 0, 0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+ { &hand_v, 0.2, 0, { -0.2, 0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+ { &hand_v, 0.2, 0, { 0, 0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+ { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_v2 = {
+ {{ 0, 1.60, 1.60, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 1.60, 1.60, 1.60, 0 },
+ { 1.60, 1.60, 1.60, 0 }},
+ { -0.80, -0.06, 0.09, 0, 0 },
+ { 0, 0, -M_PI },
+ { 0, 0, 0 },
+ True
+};
+
+static const hand_anim eyeonu_anim[] = {
+ { &hand_v2, NNN, 1, { 0.3, -1.4, 1.0 }, { M_PI - 1.8, 0, M_PI }},
+ { &hand_v2, 0.3, 0.3, { 0.3, 1.4, 0.5 }, { M_PI, 0, -M_PI }},
+ { &hand_v2, 0.3, 1, { 0.3, -1.4, 1.0 }, { M_PI - 1.8, 0, M_PI }},
+ { &hand_v2, 0.3, 0.3, { 0.3, 1.4, 0.5 }, { M_PI, 0, -M_PI }},
+ { &hand_v2, 0.3, 1, { 0.3, -1.4, 1.0 }, { M_PI - 1.8, 0, M_PI }},
+ { &hand_v2, 0.3, 0.3, { 0.3, 1.4, 0.5 }, { M_PI, 0, -M_PI }},
+ { &hand_v2, 0.3, 1, { 0.3, -1.4, 1.0 }, { M_PI - 1.8, 0, M_PI }},
+ { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_trick1 = {
+ {{ 0.50, 1.60, 1.60, 0.00 },
+ { 0, 1.60, 1.60, 0.00 },
+ { 0.36, 0.36, 0.36, 0.00 },
+ { 0, 0.16, 0.16, 0.00 },
+ { 0.00, 0.00, 0.00, 0.00 }},
+ { 0.00, 0.00, 0.00, 0.00, 0.00 },
+ { 0.00, 0.00, 0.00 },
+ { 0.00, 0.00, 0.00 },
+ True
+};
+
+
+static const hand hand_trick2 = {
+ {{ 1, 1.60, 1.60, 0.00 },
+ { 0, 1.60, 1.60, 0.00 },
+ { 0, 1.60, 1.60, 0.00 },
+ { 0, 1.60, 1.60, 0.00 },
+ { 0, 1.60, 1.60, 0.00 }},
+ { 0.00, 0.00, 0.00, 0.00, 0.00 },
+ { 0.00, 0.00, 0.00 },
+ { 0.00, 0.00, 0.00 },
+ True
+};
+
+static const hand_anim trick1_anim[] = {
+ { &hand_trick2, NNN, 1, { 0.24, 0, 0 }, { 0, M_PI/4, 0 }},
+ { &hand_trick1, 0.5, 1, { 0.24, 0, 0 }, { 0, M_PI/4, 0 }},
+ { &hand_trick1, 0.3, 0, { 0.24 - 0.4, 0, 0 }, { 0, M_PI/4, 0 }},
+ { &hand_trick1, 0.3, 0, { 0.24, 0, 0 }, { 0, M_PI/4, 0 }},
+ { &hand_trick1, 0.3, 0, { 0.24 - 0.4, 0, 0 }, { 0, M_PI/4, 0 }},
+ { &hand_trick1, 0.3, 0, { 0.24, 0, 0 }, { 0, M_PI/4, 0 }},
+ { &hand_trick1, 0.3, 0, { 0.24 - 0.4, 0, 0 }, { 0, M_PI/4, 0 }},
+ { &hand_trick1, 0.3, 0, { 0.24, 0, 0 }, { 0, M_PI/4, 0 }},
+ { &hand_trick1, 0.3, 1, { 0.24 - 0.4, 0, 0 }, { 0, M_PI/4, 0 }},
+ { 0, }};
+
+static const hand_anim trick2_anim[] = {
+ { &hand_trick2, NNN, 1, { 0.24, -0.07, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+ { &hand_trick2, 0.5, 1, { 0.24, -0.07, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+ { &hand_trick2, 0.3, 0, { 0.24 - 0.4, 0, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+ { &hand_trick2, 0.3, 0, { 0.24, -0.07, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+ { &hand_trick2, 0.3, 0, { 0.24 - 0.4, 0, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+ { &hand_trick2, 0.3, 0, { 0.24, -0.07, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+ { &hand_trick2, 0.3, 0, { 0.24 - 0.4, 0, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+ { &hand_trick2, 0.3, 0, { 0.24, -0.07, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+ { &hand_trick2, 0.3, 1, { 0.24 - 0.4, 0, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+ { 0, }};
+
+/**************************************************************************/
+
+static const hand thumbs_up = {
+ {{ 0.00, 0.00, 0.00, 0.00 },
+ { 0.56, 1.60, 1.60, 0.00 },
+ { 0.50, 1.60, 1.60, 0.00 },
+ { 0.56, 1.60, 1.60, 0.00 },
+ { 0.52, 1.60, 1.60, 0.00 }},
+ { 0.00, 0.00, 0.00, 0.00, 0.00 },
+ { M_PI, 1.52, 0.00 },
+ { 0.00, 0.00, 0.00 },
+ True
+};
+
+static const hand_anim thumbsup_anim[] = {
+ { &thumbs_up, NNN, 1, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &thumbs_up, 0.25, 0, { 0, 0, 0.25 }, { 0, 0, 0 }},
+ { &thumbs_up, 0.25, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &thumbs_up, 0.25, 0, { 0, 0, 0.25 }, { 0, 0, 0 }},
+ { &thumbs_up, 0.25, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &thumbs_up, 0.25, 0, { 0, 0, 0.25 }, { 0, 0, 0 }},
+ { &thumbs_up, 0.25, 1, { 0, 0, 0 }, { 0, 0, 0 }},
+ { 0, }};
+
+static const hand_anim thumbsdn_anim[] = {
+ { &thumbs_up, NNN, 1, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &thumbs_up, 0.25, 0.3, { -0.1, 0, 0.75 }, { 0, -M_PI, 0 }},
+ { &thumbs_up, 0.25, 0, { -0.1, 0, 0.50 }, { 0, -M_PI, 0 }},
+ { &thumbs_up, 0.25, 0, { -0.1, 0, 0.75 }, { 0, -M_PI, 0 }},
+ { &thumbs_up, 0.25, 0, { -0.1, 0, 0.50 }, { 0, -M_PI, 0 }},
+ { &thumbs_up, 0.25, 0, { -0.1, 0, 0.75 }, { 0, -M_PI, 0 }},
+ { &thumbs_up, 0.25, 1, { -0.1, 0, 0.50 }, { 0, -M_PI, 0 }},
+ { 0, }};
+
+/**************************************************************************/
+
+static const hand_anim outtahere_anim[] = {
+ { &hand_pointing, NNN, 1, { 0, 0, 0 }, { M_PI, 0, 0 }},
+ { &thumbs_up, 0.1, 0, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 0, { 0, 0, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 0, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 0, { 0, 0, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 0, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 0, { 0, 0, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 1, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+ { 0, }};
+
+static const hand_anim stahhhp_anim[] = {
+ { &hand_pointing, NNN, 1, { 0, 0, 0 }, { M_PI, 0, 0 }},
+ { &open_palm, 0.2, 0.5, { -0.1, -0.2, 0 }, { 0, 0, 0 }},
+ { &open_palm, 0.2, 0, { -0.1, -0.2, 0 }, { 0, -0.2, 0 }},
+ { &open_palm, 0.2, 0, { -0.1, -0.2, 0 }, { 0, 0.2, 0 }},
+ { &open_palm, 0.2, 0, { -0.1, -0.2, 0 }, { 0, -0.2, 0 }},
+ { &open_palm, 0.2, 0, { -0.1, -0.2, 0 }, { 0, 0.2, 0 }},
+ { &open_palm, 0.2, 0, { -0.1, -0.2, 0 }, { 0, -0.2, 0 }},
+ { &open_palm, 0.2, 1, { -0.1, -0.2, 0 }, { 0, 0.2, 0 }},
+ { &open_palm, 0.2, 0, { -0.1, -0.6, 0 }, { 0.2, 0.2, 0 }},
+ { &open_palm, 0.2, 0, { -0.1, -0.2, 0 }, { 0.2, 0.2, 0 }},
+ { &open_palm, 0.2, 0, { -0.1, -0.6, 0 }, { 0.2, 0.2, 0 }},
+ { &open_palm, 0.2, 0, { -0.1, -0.2, 0 }, { 0.2, 0.2, 0 }},
+ { &open_palm, 0.2, 0, { -0.1, -0.6, 0 }, { 0.2, 0.2, 0 }},
+ { &open_palm, 0.2, 1, { -0.1, -0.2, 0 }, { 0.2, 0.2, 0 }},
+ { 0, }};
+
+static const hand_anim thisguy_anim[] = {
+ { &thumbs_up, NNN, 0.3, { 0, -0.2, 0 }, { M_PI, 0, 0 }},
+ { &thumbs_up, 0.5, 0, { 0, 0, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 0, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 0, { 0, 0, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 0, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 0, { 0, 0, 0 }, { M_PI, 0, -M_PI/2 }},
+ { &thumbs_up, 0.1, 1, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+ { 0, }};
+
+
+/**************************************************************************/
+
+static const hand gun1 = {
+ {{ 0.00, 0.00, 0.00, 0.00 },
+ { 0.00, 0.00, 0.00, 0.00 },
+ { 0.80, 1.60, 1.60, 0.00 },
+ { 0.80, 1.60, 1.60, 0.00 },
+ { 0.80, 1.60, 1.60, 0.00 }},
+ { 0.00, 0.00, 0.00, 0.00, 0.00 },
+ { 1.50, 1.58, 0.00 },
+ { 0.00, 0.00, 0.00 },
+ True
+};
+
+static const hand gun2 = {
+ {{ 0.00, 0.84, 0.84, 0.00 },
+ { 0.00, 0.00, 0.00, 0.00 },
+ { 0.80, 1.60, 1.60, 0.00 },
+ { 0.80, 1.60, 1.60, 0.00 },
+ { 0.80, 1.60, 1.60, 0.00 }},
+ { 0.00, 0.00, 0.00, 0.00, 0.00 },
+ { 1.50, 1.58, 0.00 },
+ { 0.00, 0.00, 0.00 },
+ True
+};
+
+static const hand_anim gun_anim[] = {
+ { &gun1, NNN, 1, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &gun2, 0.1, 0, { 0, 0, 0 }, { 0, 0, -M_PI/5 }},
+ { &gun1, 0.3, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &gun2, 0.1, 0, { 0, 0, 0 }, { 0, 0, -M_PI/5 }},
+ { &gun1, 0.3, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+ { &gun2, 0.1, 0, { 0, 0, 0 }, { 0, 0, -M_PI/5 }},
+ { &gun1, 0.3, 1, { 0, 0, 0 }, { 0, 0, 0 }},
+ { 0, }};
+
+
+/**************************************************************************/
+
+#define RPS_SHAKE \
+ { &closed_hand, 0.2, 0, { -0.4, 0.3, 0.3 }, { 0, 0, -M_PI/2 }}, \
+ { &closed_hand, 0.2, 0, { -0.4, 0, 0 }, { M_PI, 0, -M_PI/2 }}, \
+ { &closed_hand, 0.2, 0, { -0.4, 0.3, 0.3 }, { 0, 0, -M_PI/2 }}, \
+ { &closed_hand, 0.2, 0, { -0.4, 0, 0 }, { M_PI, 0, -M_PI/2 }}, \
+ { &closed_hand, 0.2, 0, { -0.4, 0.3, 0.3 }, { 0, 0, -M_PI/2 }}, \
+ { &closed_hand, 0.2, 0, { -0.4, 0, 0 }, { M_PI, 0, -M_PI/2 }}
+#define RPS_0 \
+ { &open_palm, 0.2, 1, { -0.4, 0, 0 }, { 0, 0, 0 }}
+#define RPS_R RPS_SHAKE, \
+ { &closed_hand, 0.2, 1, { -0.4, 0, 0 }, { M_PI, 0, -M_PI/2 }}
+#define RPS_P RPS_SHAKE, \
+ { &open_palm, 0.2, 1, { -0.4, 0, 0 }, { M_PI/2, 0, -M_PI/2 }}
+#define RPS_S RPS_SHAKE, \
+ { &hand_v, 0.2, 1, { -0.4, 0, 0 }, { 0, -M_PI/2, 0 }}
+
+static const hand_anim rps1_anim[] = {
+ { &closed_hand, NNN, 1, { -0.4, 0, 0 }, { M_PI, 0, -M_PI/2 }},
+ RPS_S, RPS_P, RPS_R, RPS_0,
+ RPS_S, RPS_P, RPS_R, RPS_0,
+ RPS_P, RPS_R, RPS_S, RPS_0,
+ RPS_R, RPS_S, RPS_P, RPS_0,
+ { 0, }};
+
+static const hand_anim rps2_anim[] = {
+ { &closed_hand, NNN, 1, { -0.4, 0, 0 }, { M_PI, 0, -M_PI/2 }},
+ RPS_R, RPS_P, RPS_P, RPS_0,
+ RPS_P, RPS_R, RPS_R, RPS_0,
+ RPS_S, RPS_P, RPS_R, RPS_0,
+ RPS_S, RPS_P, RPS_S, RPS_0,
+ { 0, }};
+
+
+/**************************************************************************/
+
+static const hand walk1 = {
+ {{ 0.00, 0.00, 0.00, 0.00 },
+ { -0.20, -0.20, -0.20, 0.00 },
+ { 0.30, 0.24, 0.24, 0.00 },
+ { 0.00, 1.60, 1.60, 0.00 },
+ { 0.00, 1.50, 1.50, 0.00 }},
+ { -1.16, -0.12, 0.10, 0.00, 0.00 },
+ { 0.00, -0.04, 0.02 },
+ { 0.00, 0.00, 0.60 },
+ True
+};
+
+static const hand walk2 = {
+ {{ 0.00, 0.00, 0.00, 0.00 },
+ { 0.30, 0.24, 0.24, 0.00 },
+ { -0.20, -0.20, -0.20, 0.00 },
+ { 0.00, 1.60, 1.60, 0.00 },
+ { 0.00, 1.50, 1.50, 0.00 }},
+ { -1.16, -0.12, 0.10, 0.00, 0.00 },
+ { 0.00, 0.00, 0.00 },
+ { 0.00, 0.00, 0.60 },
+ True
+};
+
+static const hand_anim walk_anim[] = {
+ { &walk1, NNN, 0, { 0, 0.0, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk2, 0.3, 0, { 0, -0.1, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk1, 0.3, 0, { 0, -0.2, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk2, 0.3, 0, { 0, -0.3, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk1, 0.3, 0, { 0, -0.4, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk2, 0.3, 0, { 0, -0.5, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk1, 0.3, 0, { 0, -0.6, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk2, 0.3, 0, { 0, -0.7, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk1, 0.3, 0, { 0, -0.8, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk2, 0.3, 0, { 0, -0.9, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk1, 0.3, 0, { 0, -1.0, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk2, 0.3, 0, { 0, -1.1, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk1, 0.3, 0, { 0, -1.2, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk2, 0.3, 0, { 0, -1.3, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk1, 0.3, 0, { 0, -1.4, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk2, 0.3, 0, { 0, -1.5, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk1, 0.3, 0, { 0, -1.6, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk2, 0.3, 0, { 0, -1.7, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk1, 0.3, 0, { 0, -1.8, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk2, 0.3, 0, { 0, -1.9, -0.03 }, { 0, M_PI, M_PI }},
+ { &walk1, 0.3, 0, { 0, -2.0, -0.03 }, { 0, M_PI, M_PI }},
+ { 0, }};
+
+/**************************************************************************/
+
+static const hand_anim goatse_anim[] = {
+ { &open_palm, NNN, 1, { 0.31, 2, 0.5 }, { M_PI/2, -M_PI/2, 0 }},
+ { &open_palm, 2, 0, { 0.31, 0, 0.5 }, { M_PI/2, -M_PI/2, 0 }},
+ { &thumbs_up, 2, 1, { 0.31, 0, 0.5 }, { 0, -M_PI, 0 }},
+ { &thumbs_up, 2, 1, { -0.4, 0, 0.5 }, { 0, -M_PI, 0 }},
+ { &open_palm, 2, 1, { -0.4, 0.3, 0.5 }, { M_PI/2, -M_PI/2, 0 }},
+ { 0, }};
+
+
+/**************************************************************************/
+
+static const hand_anim_pair all_hand_anims[] = {
+ {{ middle_anim, middle_anim }, 0.2 },
+ {{ tap_anim, tap_anim }, 0.7 },
+ {{ tap_anim, tap_anim }, 0.7 },
+ {{ tap_anim, tap_anim }, 0.7 },
+ {{ spock_anim, hidden_anim}, 0 },
+ {{ spock_anim, hidden_anim}, 0 },
+ {{ horns_anim, horns_anim}, 0 },
+ {{ horns_anim, horns_anim}, 0 },
+ {{ bs1_anim, bs2_anim }, 0 },
+ {{ upyours_anim, hidden_anim }, 0 },
+ {{ peace_anim, hidden_anim }, 0 },
+ {{ scissor1_anim, scissor2_anim }, 0 },
+ {{ wave_anim, hidden_anim }, 0 },
+ {{ wave2_anim, hidden_anim }, 0 },
+ {{ jazzhands_anim, jazzhands_anim }, 0 },
+ {{ ok_anim, ok_anim }, 0 },
+ {{ inout1_anim, inout2_anim }, 0 },
+ {{ clap_anim, clap_anim }, 0 },
+ {{ slow_clap_anim, slow_clap_anim }, 0 },
+ {{ pray_anim, pray_anim }, 0 },
+ {{ eyeonu_anim, hidden_anim }, 0 },
+ {{ trick1_anim, trick2_anim }, 0 },
+ {{ thumbsup_anim, thumbsup_anim }, 0 },
+ {{ thumbsdn_anim, thumbsdn_anim }, 0 },
+ {{ thisguy_anim, thisguy_anim }, 0 },
+ {{ outtahere_anim, hidden_anim }, 0 },
+ {{ stahhhp_anim, stahhhp_anim }, 0 },
+ {{ gun_anim, gun_anim }, 0.25 },
+ {{ walk_anim, walk_anim }, 0.3 },
+ {{ goatse_anim, goatse_anim }, 0 },
+ {{ 0, }}};
+
+#endif /* __HANDSY_ANIM__ */
diff --git a/hacks/glx/handsy_model.c b/hacks/glx/handsy_model.c
new file mode 100644
index 0000000..e413ceb
--- /dev/null
+++ b/hacks/glx/handsy_model.c
@@ -0,0 +1,6684 @@
+/* Generated from "handsy.dxf" on 25-Oct-2018.
+ Smoothed vertex normals at 28°.
+ Components: finger_distal, finger_intermediate, finger_metacarpal,
+ finger_proximal, palm, thumb_distal, thumb_metacarpal, thumb_proximal.
+ */
+
+#include "gllist.h"
+
+static const float handsy_model_finger_distal_data[] = {
+ -0.707107,0.707107,0,0.095086,0.180273,1.001864,
+ -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+ -0.707107,0.707107,0,0.099318,0.184504,1.001864,
+ -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+ -0.707107,0.707107,0,0.095086,0.180273,1.001864,
+ -0.707107,0.707107,0,0.090393,0.175579,1.058824,
+ -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+ -0.707107,0.707107,0,0.090393,0.175579,1.058824,
+ -0.707107,0.707107,0,0.084928,0.170115,1.079901,
+ -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+ -0.707107,0.707107,0,0.084928,0.170115,1.079901,
+ -0.707107,0.707107,0,0.084928,0.170115,1.091226,
+ -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+ -0.707107,0.707107,0,0.084928,0.170115,1.091226,
+ -0.707107,0.707107,0,0.084928,0.170115,1.135994,
+ -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+ -0.707107,0.707107,0,0.084928,0.170115,1.135994,
+ -0.707107,0.707107,0,0.090962,0.176148,1.142819,
+ -0.707107,0.707107,0,0.090962,0.176148,1.142819,
+ -0.707107,0.707107,0,0.084928,0.170115,1.135994,
+ -0.707107,0.707107,0,0.084928,0.170115,1.147449,
+ 0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+ 0.808758,0.575,0.123638,0.140043,0.160058,0.848974,
+ 0.91898,0.370926,0.13375,0.175201,0.114294,0.794628,
+ 0.808758,0.575,0.123638,0.140043,0.160058,0.848974,
+ 0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+ 0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+ 0.630687,0.768681,0.106602,0.095242,0.193568,0.918226,
+ 0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+ 0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+ 0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+ 0.630687,0.768681,0.106602,0.095242,0.193568,0.918226,
+ 0.808758,0.575,0.123638,0.140043,0.160058,0.848974,
+ 0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+ 0.91898,0.370926,0.13375,0.175201,0.114294,0.794628,
+ 0.969671,0.201527,0.138296,0.197659,0.059532,0.759913,
+ 0.91898,0.370926,0.13375,0.175201,0.114294,0.794628,
+ 0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+ 0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+ -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+ -0.707095,0.707095,-0.005782,-0.206534,0.206534,0.206534,
+ -0.887099,0.461543,-0.005776,-0.253185,0.146177,0.253185,
+ -0.707095,0.707095,-0.005782,-0.206534,0.206534,0.206534,
+ -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+ -0.706249,0.706249,0.049244,-0.206951,0.206951,0.308415,
+ 0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+ 0.935393,0.051194,0.349884,0.205383,0,0.747973,
+ 0.987543,0.10011,0.121395,0.20782,0,0.730756,
+ 0.935393,0.051194,0.349884,0.205383,0,0.747973,
+ 0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+ 0.9306,0.103399,0.35113,0.197659,0.059532,0.759913,
+ -0.461543,0.887099,-0.005776,-0.145866,0.252648,0.145866,
+ -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+ -0.216218,0.976328,-0.005776,-0.0754,0.281398,0.0754,
+ -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+ -0.461543,0.887099,-0.005776,-0.145866,0.252648,0.145866,
+ -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+ 0.324287,0.942926,0.075685,0.044468,0.212784,0.996711,
+ 0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+ 0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+ 0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+ 0.324287,0.942926,0.075685,0.044468,0.212784,0.996711,
+ 0.630687,0.768681,0.106602,0.095242,0.193568,0.918226,
+ -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+ -0.887099,0.461543,-0.005776,-0.253185,0.146177,0.253185,
+ -0.976328,0.216218,-0.005776,-0.282555,0.07571,0.282555,
+ -0.887099,0.461543,-0.005776,-0.253185,0.146177,0.253185,
+ -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+ -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+ -0.990262,0.130371,0.048824,-0.292672,0,0.308415,
+ -0.976328,0.216218,-0.005776,-0.282555,0.07571,0.282555,
+ -0.991429,0.130524,-0.005732,-0.292581,0,0.292581,
+ -0.976328,0.216218,-0.005776,-0.282555,0.07571,0.282555,
+ -0.990262,0.130371,0.048824,-0.292672,0,0.308415,
+ -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+ 0.020045,0.337373,0.941158,0.166851,0.067533,1.206027,
+ 0.019327,0.266418,0.963664,0.145844,0.064475,1.207294,
+ 0.003099,0.22022,0.975445,0.146803,0.062161,1.207598,
+ 0.035916,0.522579,0.851834,0.140784,0.130464,1.177874,
+ 0.036445,0.521909,0.852222,0.11938,0.124556,1.182407,
+ 0.04764,0.414629,0.908743,0.122809,0.120086,1.184259,
+ 0.866025,0.5,0,0.140784,0.130464,0.847828,
+ 0.95365,0.300918,0,0.166851,0.067533,1.206027,
+ 0.98084,0.194814,0,0.166851,0.067533,0.807535,
+ 0.95365,0.300918,0,0.166851,0.067533,1.206027,
+ 0.866025,0.5,0,0.140784,0.130464,0.847828,
+ 0.866025,0.5,0,0.140784,0.130464,1.177874,
+ 0.020045,0.337373,0.941158,0.166851,0.067533,1.206027,
+ 0.04764,0.414629,0.908743,0.122809,0.120086,1.184259,
+ 0.019327,0.266418,0.963664,0.145844,0.064475,1.207294,
+ -0.991445,-0.130526,0,0.154986,0,1.215782,
+ -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+ -0.991445,-0.130526,0,0.154986,0,1.091226,
+ -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+ -0.991445,-0.130526,0,0.154986,0,1.215782,
+ -0.965926,-0.258819,0,0.146803,0.062161,1.207598,
+ 0.035916,0.522579,0.851834,0.140784,0.130464,1.177874,
+ 0,0.608761,0.793353,0.084928,0.169454,1.147956,
+ 0.036445,0.521909,0.852222,0.11938,0.124556,1.182407,
+ 0,0.659134,0.752025,0.10573,0.176148,1.142819,
+ 0,0.608761,0.793353,0.084928,0.170115,1.147449,
+ 0,0.608761,0.793353,0.084928,0.169454,1.147956,
+ -1,0,0,0.084928,0.170115,1.147449,
+ -0.998017,0.062939,0,0.084928,0.169454,1.136304,
+ -0.992013,0.126132,0,0.084928,0.169454,1.147956,
+ -0.998017,0.062939,0,0.084928,0.169454,1.136304,
+ -1,0,0,0.084928,0.170115,1.147449,
+ -1,0,0,0.084928,0.170115,1.135994,
+ 0,0.130526,0.991445,0.154986,0,1.215782,
+ -0.009782,0.215043,0.976556,0.167254,0.064475,1.207294,
+ 0.003099,0.22022,0.975445,0.146803,0.062161,1.207598,
+ -0.009782,0.215043,0.976556,0.167254,0.064475,1.207294,
+ 0,0.130526,0.991445,0.154986,0,1.215782,
+ 0,0.130526,0.991445,0.175742,0,1.215782,
+ -1,0,0,0.084928,0.170115,1.135994,
+ -0.998734,0.050307,0,0.084928,0.169454,1.091226,
+ -0.998017,0.062939,0,0.084928,0.169454,1.136304,
+ -0.998734,0.050307,0,0.084928,0.169454,1.091226,
+ -1,0,0,0.084928,0.170115,1.135994,
+ -1,0,0,0.084928,0.170115,1.091226,
+ 0.020045,0.337373,0.941158,0.166851,0.067533,1.206027,
+ 0.035916,0.522579,0.851834,0.140784,0.130464,1.177874,
+ 0.04764,0.414629,0.908743,0.122809,0.120086,1.184259,
+ 0,0.659134,0.752025,0.10573,0.176148,1.142819,
+ 0,0.793353,0.608761,0.099318,0.184504,1.131929,
+ 0,0.707107,0.707107,0.090962,0.176148,1.142819,
+ 0.866025,0.5,0,0.140784,0.130464,0.847828,
+ 0.793353,0.608761,0,0.10573,0.176148,1.142819,
+ 0.866025,0.5,0,0.140784,0.130464,1.177874,
+ 0.793353,0.608761,0,0.10573,0.176148,1.142819,
+ 0.866025,0.5,0,0.140784,0.130464,0.847828,
+ 0.793353,0.608761,0,0.099318,0.184504,0.911925,
+ 0.793353,0.608761,0,0.10573,0.176148,1.142819,
+ 0.793353,0.608761,0,0.099318,0.184504,0.911925,
+ 0.793353,0.608761,0,0.099318,0.184504,1.001864,
+ 0.793353,0.608761,0,0.10573,0.176148,1.142819,
+ 0.793353,0.608761,0,0.099318,0.184504,1.001864,
+ 0.793353,0.608761,0,0.099318,0.184504,1.131929,
+ -0.92388,-0.382683,0,0.137837,0.083806,1.091226,
+ -0.965926,-0.258819,0,0.146803,0.062161,1.085202,
+ -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+ -0.009782,0.215043,0.976556,0.167254,0.064475,1.207294,
+ 0.020045,0.337373,0.941158,0.166851,0.067533,1.206027,
+ 0.003099,0.22022,0.975445,0.146803,0.062161,1.207598,
+ -0.998734,0.050307,0,0.084928,0.169454,1.091226,
+ -1,0,0,0.084928,0.170115,1.079901,
+ -1,0,0,0.084928,0.169454,1.081177,
+ -1,0,0,0.084928,0.170115,1.079901,
+ -0.998734,0.050307,0,0.084928,0.169454,1.091226,
+ -1,0,0,0.084928,0.170115,1.091226,
+ 0.035916,0.522579,0.851834,0.140784,0.130464,1.177874,
+ 0,0.659134,0.752025,0.10573,0.176148,1.142819,
+ 0,0.608761,0.793353,0.084928,0.169454,1.147956,
+ -0.92388,-0.382683,0,0.12778,0.108086,1.091226,
+ -0.92388,-0.382683,0,0.137837,0.083806,1.091226,
+ -0.92388,-0.382683,0,0.13166,0.098719,1.095377,
+ 0,0.659134,0.752025,0.10573,0.176148,1.142819,
+ 0,0.707107,0.707107,0.090962,0.176148,1.142819,
+ 0,0.608761,0.793353,0.084928,0.170115,1.147449,
+ -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+ -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+ -0.866025,-0.5,0,0.122809,0.120086,1.091226,
+ -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+ -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+ -0.793353,-0.608761,0,0.11938,0.124556,1.182407,
+ -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+ -0.793353,-0.608761,0,0.11938,0.124556,1.182407,
+ -0.793353,-0.608761,0,0.084928,0.169454,1.147956,
+ -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+ -0.793353,-0.608761,0,0.084928,0.169454,1.147956,
+ -0.793353,-0.608761,0,0.107664,0.139824,1.094648,
+ -0.793353,-0.608761,0,0.107664,0.139824,1.094648,
+ -0.793353,-0.608761,0,0.084928,0.169454,1.147956,
+ -0.793353,-0.608761,0,0.101889,0.14735,1.091226,
+ -0.793353,-0.608761,0,0.101889,0.14735,1.091226,
+ -0.793353,-0.608761,0,0.084928,0.169454,1.147956,
+ -0.793353,-0.608761,0,0.084928,0.169454,1.091226,
+ -0.998734,0.050307,0,0.084928,0.169454,1.091226,
+ -0.992013,0.126132,0,0.084928,0.169454,1.147956,
+ -0.998017,0.062939,0,0.084928,0.169454,1.136304,
+ 0.98084,0.194814,0,0.166851,0.067533,0.807535,
+ 0.991445,0.130526,0,0.175742,0,1.215782,
+ 0.991445,0.130526,0,0.175742,0,0.793792,
+ 0.991445,0.130526,0,0.175742,0,1.215782,
+ 0.98084,0.194814,0,0.166851,0.067533,0.807535,
+ 0.991445,0.130526,0,0.167254,0.064475,1.207294,
+ 0.991445,0.130526,0,0.167254,0.064475,1.207294,
+ 0.98084,0.194814,0,0.166851,0.067533,0.807535,
+ 0.95365,0.300918,0,0.166851,0.067533,1.206027,
+ 0.931595,0.193458,0.307742,0.148197,0.05157,1.090997,
+ 0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+ 0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+ 0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+ 0.931595,0.193458,0.307742,0.148197,0.05157,1.090997,
+ 0.905776,0.288892,0.310019,0.146803,0.062161,1.085202,
+ 0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+ 0.905776,0.288892,0.310019,0.146803,0.062161,1.085202,
+ 0.905776,0.288892,0.310019,0.137837,0.083806,1.091226,
+ 0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+ 0.905776,0.288892,0.310019,0.137837,0.083806,1.091226,
+ 0.849124,0.419187,0.321357,0.13166,0.098719,1.095377,
+ 0.415157,0.90975,0,0.08473,0.190593,0.934475,
+ 0.385197,0.922834,0,0.099318,0.184504,1.001864,
+ 0.385197,0.922834,0,0.099318,0.184504,0.911925,
+ 0.385197,0.922834,0,0.099318,0.184504,1.001864,
+ 0.415157,0.90975,0,0.08473,0.190593,0.934475,
+ 0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+ 0,0,1,0.099318,0.184504,1.001864,
+ 0,0,1,0.08473,0.190593,1.001864,
+ 0,0,1,0.095086,0.180273,1.001864,
+ -0.793353,-0.608761,0,0.084928,0.169454,1.091226,
+ -0.793353,-0.608761,0,0.084928,0.169454,1.081177,
+ -0.793353,-0.608761,0,0.101889,0.14735,1.091226,
+ -0.92388,-0.382683,0,0.145844,0.064475,1.207294,
+ -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+ -0.965926,-0.258819,0,0.146803,0.062161,1.207598,
+ -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+ -0.92388,-0.382683,0,0.145844,0.064475,1.207294,
+ -0.92388,-0.382683,0,0.137837,0.083806,1.091226,
+ -0.92388,-0.382683,0,0.137837,0.083806,1.091226,
+ -0.92388,-0.382683,0,0.145844,0.064475,1.207294,
+ -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+ -0.92388,-0.382683,0,0.137837,0.083806,1.091226,
+ -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+ -0.92388,-0.382683,0,0.13166,0.098719,1.095377,
+ -0.92388,-0.382683,0,0.13166,0.098719,1.095377,
+ -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+ -0.92388,-0.382683,0,0.12778,0.108086,1.091226,
+ -0.92388,-0.382683,0,0.12778,0.108086,1.091226,
+ -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+ -0.866025,-0.5,0,0.122809,0.120086,1.091226,
+ -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+ -0.866025,-0.5,0,0.122809,0.120086,1.085909,
+ -0.866025,-0.5,0,0.122809,0.120086,1.091226,
+ 0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+ 0.701131,0.703574,0.115755,0.095086,0.180273,1.001864,
+ 0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+ 0.701131,0.703574,0.115755,0.095086,0.180273,1.001864,
+ 0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+ 0.679711,0.682079,0.269744,0.090393,0.175579,1.058824,
+ -0.793353,-0.608761,0,0.101889,0.14735,1.091226,
+ -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+ -0.793353,-0.608761,0,0.107664,0.139824,1.094648,
+ -0.991445,-0.130526,0,0.154986,0,1.091226,
+ -0.991445,-0.130526,0,0.148197,0.05157,1.090997,
+ -0.991445,-0.130526,0,0.154986,0,1.086101,
+ -0.991445,-0.130526,0,0.148197,0.05157,1.090997,
+ -0.991445,-0.130526,0,0.154986,0,1.091226,
+ -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+ -0.991445,-0.130526,0,0.148197,0.05157,1.090997,
+ -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+ -0.965926,-0.258819,0,0.146803,0.062161,1.085202,
+ -0.866025,-0.5,0,0.122809,0.120086,1.085909,
+ -0.92388,-0.382683,0,0.12778,0.108086,1.091226,
+ -0.866025,-0.5,0,0.122809,0.120086,1.091226,
+ 0.247221,0.204672,0.947096,0.031013,0.040277,1.214443,
+ 0.171497,0.24914,0.953162,0.02193,0.049329,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ 0.304882,0.147067,0.940967,0.037983,0.02848,1.214443,
+ 0.247221,0.204672,0.947096,0.031013,0.040277,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ 0.247221,0.204672,0.947096,0.031013,0.040277,1.214443,
+ 0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+ 0.171497,0.24914,0.953162,0.02193,0.049329,1.214443,
+ 0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+ 0.247221,0.204672,0.947096,0.031013,0.040277,1.214443,
+ 0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+ 0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+ 0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+ 0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+ 0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+ 0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+ 0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+ 0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+ 0.679711,0.682079,0.269744,0.090393,0.175579,1.058824,
+ 0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+ 0.679711,0.682079,0.269744,0.090393,0.175579,1.058824,
+ 0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+ 0.662732,0.66504,0.34425,0.084928,0.170115,1.079901,
+ 0.662732,0.66504,0.34425,0.084928,0.170115,1.079901,
+ 0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+ 0.662732,0.66504,0.34425,0.084928,0.169454,1.081177,
+ 0.662732,0.66504,0.34425,0.084928,0.169454,1.081177,
+ 0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+ 0.662732,0.66504,0.34425,0.101889,0.14735,1.091226,
+ 0.662732,0.66504,0.34425,0.101889,0.14735,1.091226,
+ 0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+ 0.717843,0.607615,0.33986,0.107664,0.139824,1.094648,
+ 0.717843,0.607615,0.33986,0.107664,0.139824,1.094648,
+ 0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+ 0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+ 0.849124,0.419187,0.321357,0.13166,0.098719,1.095377,
+ 0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+ 0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+ 0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+ 0.849124,0.419187,0.321357,0.13166,0.098719,1.095377,
+ 0.814338,0.481145,0.32458,0.12778,0.108086,1.091226,
+ 0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+ 0.814338,0.481145,0.32458,0.12778,0.108086,1.091226,
+ 0.814338,0.481145,0.32458,0.122809,0.120086,1.085909,
+ 0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+ 0.814338,0.481145,0.32458,0.122809,0.120086,1.085909,
+ 0.814338,0.481145,0.32458,0.113594,0.132096,1.091226,
+ 0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+ 0.814338,0.481145,0.32458,0.113594,0.132096,1.091226,
+ 0.717843,0.607615,0.33986,0.107664,0.139824,1.094648,
+ 0.100924,0.993347,0.05547,0,0.292672,0.308415,
+ 0.283658,0.958361,0.032903,0.07279,0.281365,0.01023,
+ 0,0.999983,-0.005782,0,0.290889,0,
+ 0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+ 0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+ 0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+ 0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+ 0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+ 0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+ 0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+ 0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+ 0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+ 0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+ 0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+ 0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+ 0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+ 0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+ 0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+ 0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+ 0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+ 0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+ 0.304882,0.147067,0.940967,0.037983,0.02848,1.214443,
+ 0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+ 0.247221,0.204672,0.947096,0.031013,0.040277,1.214443,
+ 0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+ 0.304882,0.147067,0.940967,0.037983,0.02848,1.214443,
+ 0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+ 0.341624,0.080671,0.936368,0.042365,0.014742,1.214443,
+ 0.304882,0.147067,0.940967,0.037983,0.02848,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ 0.341624,0.080671,0.936368,0.042365,0.014742,1.214443,
+ 0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+ 0.304882,0.147067,0.940967,0.037983,0.02848,1.214443,
+ 0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+ 0.341624,0.080671,0.936368,0.042365,0.014742,1.214443,
+ 0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+ 0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+ 0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+ 0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+ 0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+ 0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+ 0.757352,0.141892,0.637404,0.115744,0.040277,1.157482,
+ 0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+ 0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+ 0.757352,0.141892,0.637404,0.115744,0.040277,1.157482,
+ 0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+ 0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+ 0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+ 0.376048,0.038121,0.925816,0.04386,0,1.214443,
+ 0.341624,0.080671,0.936368,0.042365,0.014742,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ 0.376048,0.038121,0.925816,0.04386,0,1.214443,
+ 0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+ 0.341624,0.080671,0.936368,0.042365,0.014742,1.214443,
+ 0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+ 0.376048,0.038121,0.925816,0.04386,0,1.214443,
+ 0.63304,0.064173,0.771454,0.08473,0,1.192457,
+ 0.63304,0.064173,0.771454,0.08473,0,1.192457,
+ 0.757352,0.141892,0.637404,0.115744,0.040277,1.157482,
+ 0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+ 0.757352,0.141892,0.637404,0.115744,0.040277,1.157482,
+ 0.63304,0.064173,0.771454,0.08473,0,1.192457,
+ 0.81226,0.082341,0.577454,0.119827,0,1.157482,
+ 0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+ 0.81226,0.082341,0.577454,0.119827,0,1.157482,
+ 0.923246,0.093592,0.372635,0.146757,0,1.111903,
+ 0.81226,0.082341,0.577454,0.119827,0,1.157482,
+ 0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+ 0.757352,0.141892,0.637404,0.115744,0.040277,1.157482,
+ 0.931595,0.193458,0.307742,0.148197,0.05157,1.090997,
+ 0.923246,0.093592,0.372635,0.146757,0,1.111903,
+ 0.948303,0.096132,0.302456,0.154986,0,1.086101,
+ 0.923246,0.093592,0.372635,0.146757,0,1.111903,
+ 0.931595,0.193458,0.307742,0.148197,0.05157,1.090997,
+ 0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+ 0.167861,0.981775,0.089114,0.041134,0.213045,1.001864,
+ 0.324762,0.943628,0.064002,0.04386,0.212579,1.001864,
+ 0.376389,0.926462,0,0.04386,0.212579,0.997651,
+ 0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+ 0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+ 0.324762,0.943628,0.064002,0.04386,0.212579,1.001864,
+ 0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+ 0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+ 0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+ 0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+ 0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+ 0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+ 0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+ 0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+ 0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+ 0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+ 0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+ 0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+ 0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+ 0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+ 0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+ 0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+ 0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+ 0.171508,0.455084,0.873775,0.02193,0.10629,1.192457,
+ 0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+ 0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+ 0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+ 0.171497,0.24914,0.953162,0.02193,0.049329,1.214443,
+ 0.171508,0.455084,0.873775,0.02193,0.10629,1.192457,
+ 0.082478,0.276507,0.957466,0.011352,0.05502,1.214443,
+ 0.171508,0.455084,0.873775,0.02193,0.10629,1.192457,
+ 0.171497,0.24914,0.953162,0.02193,0.049329,1.214443,
+ 0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+ 0.171497,0.24914,0.953162,0.02193,0.049329,1.214443,
+ 0.082478,0.276507,0.957466,0.011352,0.05502,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ 0.048912,0.971204,0.233174,0,0.212579,1.058824,
+ 0.167861,0.981775,0.089114,0.041134,0.213045,1.001864,
+ 0.062068,0.99278,0.102645,0,0.220078,1.001864,
+ 0.167861,0.981775,0.089114,0.041134,0.213045,1.001864,
+ 0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+ 0.324762,0.943628,0.064002,0.04386,0.212579,1.001864,
+ 0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+ 0.167861,0.981775,0.089114,0.041134,0.213045,1.001864,
+ 0.048912,0.971204,0.233174,0,0.212579,1.058824,
+ -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+ 0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+ 0.048912,0.971204,0.233174,0,0.212579,1.058824,
+ 0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+ -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+ 0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+ 0.018377,0.706803,0.707171,0,0.155619,1.157482,
+ 0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+ -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+ 0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+ 0.018377,0.706803,0.707171,0,0.155619,1.157482,
+ 0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+ 0.022695,0.483335,0.875141,0,0.110039,1.192457,
+ 0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+ 0.018377,0.706803,0.707171,0,0.155619,1.157482,
+ 0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+ 0.022695,0.483335,0.875141,0,0.110039,1.192457,
+ 0.171508,0.455084,0.873775,0.02193,0.10629,1.192457,
+ 0.082478,0.276507,0.957466,0.011352,0.05502,1.214443,
+ 0.022695,0.483335,0.875141,0,0.110039,1.192457,
+ 0.005074,0.25872,0.965939,0,0.05696,1.214443,
+ 0.022695,0.483335,0.875141,0,0.110039,1.192457,
+ 0.082478,0.276507,0.957466,0.011352,0.05502,1.214443,
+ 0.171508,0.455084,0.873775,0.02193,0.10629,1.192457,
+ 0.082478,0.276507,0.957466,0.011352,0.05502,1.214443,
+ 0.005074,0.25872,0.965939,0,0.05696,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ 0.005074,0.25872,0.965939,0,0.05696,1.214443,
+ -0.063714,0.27702,0.958749,-0.014742,0.05502,1.214443,
+ -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+ -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+ -0.231735,0.965999,0.114651,-0.05696,0.212579,1.001864,
+ -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+ -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+ -0.50048,0.817794,0.284135,-0.10629,0.184099,1.058824,
+ -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+ -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+ -0.50048,0.817794,0.284135,-0.10629,0.184099,1.058824,
+ -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+ -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+ -0.24095,0.817816,0.522609,-0.049329,0.184099,1.111903,
+ -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+ -0.24095,0.817816,0.522609,-0.049329,0.184099,1.111903,
+ -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+ -0.24095,0.817816,0.522609,-0.049329,0.184099,1.111903,
+ -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+ -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+ -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+ -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+ -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+ -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+ -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+ -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+ -0.133242,0.25109,0.958749,-0.02848,0.049329,1.214443,
+ -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+ -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+ -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+ -0.133242,0.25109,0.958749,-0.02848,0.049329,1.214443,
+ -0.063714,0.27702,0.958749,-0.014742,0.05502,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ -0.063714,0.27702,0.958749,-0.014742,0.05502,1.214443,
+ -0.133242,0.25109,0.958749,-0.02848,0.049329,1.214443,
+ 0.935393,0.051194,0.349884,0.205383,0,0.747973,
+ 0.83962,0,0.543174,0.166851,0.067533,0.807535,
+ 0.83962,0,0.543174,0.175742,0,0.793792,
+ 0.83962,0,0.543174,0.166851,0.067533,0.807535,
+ 0.935393,0.051194,0.349884,0.205383,0,0.747973,
+ 0.90795,0.034033,0.417694,0.197659,0.059532,0.759913,
+ 0.83962,0,0.543174,0.166851,0.067533,0.807535,
+ 0.90795,0.034033,0.417694,0.197659,0.059532,0.759913,
+ 0.83962,0,0.543174,0.175201,0.114294,0.794628,
+ 0.83962,0,0.543174,0.166851,0.067533,0.807535,
+ 0.83962,0,0.543174,0.175201,0.114294,0.794628,
+ 0.83962,0,0.543174,0.140784,0.130464,0.847828,
+ 0.83962,0,0.543174,0.140784,0.130464,0.847828,
+ 0.83962,0,0.543174,0.175201,0.114294,0.794628,
+ 0.83962,0,0.543174,0.140043,0.160058,0.848974,
+ 0.83962,0,0.543174,0.140784,0.130464,0.847828,
+ 0.83962,0,0.543174,0.140043,0.160058,0.848974,
+ 0.83962,0,0.543174,0.099318,0.184504,0.911925,
+ 0.83962,0,0.543174,0.099318,0.184504,0.911925,
+ 0.83962,0,0.543174,0.140043,0.160058,0.848974,
+ 0.83962,0,0.543174,0.095242,0.193568,0.918226,
+ 0.83962,0,0.543174,0.099318,0.184504,0.911925,
+ 0.83962,0,0.543174,0.095242,0.193568,0.918226,
+ 0.83962,0,0.543174,0.08473,0.190593,0.934475,
+ 0.83962,0,0.543174,0.08473,0.190593,0.934475,
+ 0.83962,0,0.543174,0.095242,0.193568,0.918226,
+ 0.83962,0,0.543174,0.04386,0.212579,0.997651,
+ 0.83962,0,0.543174,0.04386,0.212579,0.997651,
+ 0.83962,0,0.543174,0.095242,0.193568,0.918226,
+ 0.83962,0,0.543174,0.044468,0.212784,0.996711,
+ 0.83962,0,0.543174,0.04386,0.212579,0.997651,
+ 0.83962,0,0.543174,0.044468,0.212784,0.996711,
+ 0.83962,0,0.543174,0.041134,0.213045,1.001864,
+ -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+ -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+ -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+ -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+ -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+ -0.50048,0.817794,0.284135,-0.10629,0.184099,1.058824,
+ -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+ -0.50048,0.817794,0.284135,-0.10629,0.184099,1.058824,
+ -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+ -0.50048,0.817794,0.284135,-0.10629,0.184099,1.058824,
+ -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+ -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+ -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+ -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+ -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+ -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+ -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+ -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+ -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+ -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+ -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+ -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+ -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+ -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+ -0.193688,0.208049,0.958749,-0.040277,0.040277,1.214443,
+ -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+ -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+ -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+ -0.193688,0.208049,0.958749,-0.040277,0.040277,1.214443,
+ -0.133242,0.25109,0.958749,-0.02848,0.049329,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ -0.133242,0.25109,0.958749,-0.02848,0.049329,1.214443,
+ -0.193688,0.208049,0.958749,-0.040277,0.040277,1.214443,
+ -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+ -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+ -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+ -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+ -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+ -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+ -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+ -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+ -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+ -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+ -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+ -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+ -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+ -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+ -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+ -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+ -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+ -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+ -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+ -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+ -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+ -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+ -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+ -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+ -0.240936,0.15083,0.958749,-0.049329,0.02848,1.214443,
+ -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+ -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+ -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+ -0.240936,0.15083,0.958749,-0.049329,0.02848,1.214443,
+ -0.193688,0.208049,0.958749,-0.040277,0.040277,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ -0.193688,0.208049,0.958749,-0.040277,0.040277,1.214443,
+ -0.240936,0.15083,0.958749,-0.049329,0.02848,1.214443,
+ -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+ -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+ -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+ -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+ -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+ -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+ -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+ -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+ -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+ -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+ -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+ -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+ -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+ -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+ -0.668799,0.16246,0.725476,-0.150316,0.040277,1.157482,
+ -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+ -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+ -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+ -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+ -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+ -0.668799,0.16246,0.725476,-0.150316,0.040277,1.157482,
+ -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+ -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+ -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+ -0.271764,0.083332,0.958749,-0.05502,0.014742,1.214443,
+ -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+ -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+ -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+ -0.271764,0.083332,0.958749,-0.05502,0.014742,1.214443,
+ -0.240936,0.15083,0.958749,-0.049329,0.02848,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ -0.240936,0.15083,0.958749,-0.049329,0.02848,1.214443,
+ -0.271764,0.083332,0.958749,-0.05502,0.014742,1.214443,
+ -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+ -0.984196,0.129572,0.120707,-0.220078,0,1.001864,
+ -0.946203,0.12457,0.298635,-0.212579,0,1.058824,
+ -0.984196,0.129572,0.120707,-0.220078,0,1.001864,
+ -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+ -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+ -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+ -0.946203,0.12457,0.298635,-0.212579,0,1.058824,
+ -0.860389,0.113272,0.496891,-0.190593,0,1.111903,
+ -0.946203,0.12457,0.298635,-0.212579,0,1.058824,
+ -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+ -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+ -0.73389,0.096619,0.672361,-0.155619,0,1.157482,
+ -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+ -0.860389,0.113272,0.496891,-0.190593,0,1.111903,
+ -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+ -0.73389,0.096619,0.672361,-0.155619,0,1.157482,
+ -0.668799,0.16246,0.725476,-0.150316,0.040277,1.157482,
+ -0.536052,0.070573,0.84123,-0.110039,0,1.192457,
+ -0.668799,0.16246,0.725476,-0.150316,0.040277,1.157482,
+ -0.73389,0.096619,0.672361,-0.155619,0,1.157482,
+ -0.668799,0.16246,0.725476,-0.150316,0.040277,1.157482,
+ -0.536052,0.070573,0.84123,-0.110039,0,1.192457,
+ -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+ -0.30062,0.039577,0.952922,-0.05696,0,1.214443,
+ -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+ -0.536052,0.070573,0.84123,-0.110039,0,1.192457,
+ -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+ -0.30062,0.039577,0.952922,-0.05696,0,1.214443,
+ -0.271764,0.083332,0.958749,-0.05502,0.014742,1.214443,
+ 0.012418,0.084509,0.996345,0,0,1.221942,
+ -0.271764,0.083332,0.958749,-0.05502,0.014742,1.214443,
+ -0.30062,0.039577,0.952922,-0.05696,0,1.214443,
+ 0.376389,0.926462,0,0.04386,0.212579,0.997651,
+ 0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+ 0.415157,0.90975,0,0.08473,0.190593,0.934475,
+ 0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+ 0.376389,0.926462,0,0.04386,0.212579,0.997651,
+ 0.324762,0.943628,0.064002,0.04386,0.212579,1.001864,
+ 0.062068,0.99278,0.102645,0,0.220078,1.001864,
+ 0.324287,0.942926,0.075685,0.044468,0.212784,0.996711,
+ 0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+ 0.324287,0.942926,0.075685,0.044468,0.212784,0.996711,
+ 0.062068,0.99278,0.102645,0,0.220078,1.001864,
+ 0.167861,0.981775,0.089114,0.041134,0.213045,1.001864,
+ 0.3285,0.942649,0.059162,0,0.292672,0.308415,
+ 0.413623,0.907654,0.071272,0.075296,0.280143,0.010582,
+ 0.283658,0.958361,0.032903,0.07279,0.281365,0.01023,
+ 0.413623,0.907654,0.071272,0.075296,0.280143,0.010582,
+ 0.3285,0.942649,0.059162,0,0.292672,0.308415,
+ 0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+ 0.062068,0.99278,0.102645,0,0.220078,1.001864,
+ 0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+ 0.100924,0.993347,0.05547,0,0.292672,0.308415,
+ -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+ -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+ -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+ -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+ -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+ -0.231735,0.965999,0.114651,-0.05696,0.212579,1.001864,
+ -0.608751,0.79334,-0.005732,-0.20569,0.207176,0.20569,
+ -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+ -0.461543,0.887099,-0.005776,-0.145866,0.252648,0.145866,
+ -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+ -0.608751,0.79334,-0.005732,-0.20569,0.207176,0.20569,
+ -0.707095,0.707095,-0.005782,-0.206534,0.206534,0.206534,
+ -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+ -0.707095,0.707095,-0.005782,-0.206534,0.206534,0.206534,
+ -0.706249,0.706249,0.049244,-0.206951,0.206951,0.308415,
+ -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+ -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+ -0.706249,0.706249,0.049244,-0.206951,0.206951,0.308415,
+ -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+ -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+ -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+ -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+ -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+ -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+ -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+ -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+ -0.706249,0.706249,0.049244,-0.206951,0.206951,0.308415,
+ -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+ -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+ -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+ -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+ -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+ -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+ -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+ -0.990262,0.130371,0.048824,-0.292672,0,0.308415,
+ -0.984196,0.129572,0.120707,-0.220078,0,1.001864,
+ -0.990262,0.130371,0.048824,-0.292672,0,0.308415,
+ -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+ -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+ 0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+ 0.427508,0.900816,0.075942,0.143524,0.251128,0.020171,
+ 0.413623,0.907654,0.071272,0.075296,0.280143,0.010582,
+ -0.216218,0.976328,-0.005776,-0.0754,0.281398,0.0754,
+ -0.013108,0.99872,0.048851,0,0.292672,0.308415,
+ 0,0.999983,-0.005782,0,0.290889,0,
+ -0.013108,0.99872,0.048851,0,0.292672,0.308415,
+ -0.216218,0.976328,-0.005776,-0.0754,0.281398,0.0754,
+ -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+ -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+ 0.018377,0.706803,0.707171,0,0.155619,1.157482,
+ -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+ 0.018377,0.706803,0.707171,0,0.155619,1.157482,
+ -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+ 0.022695,0.483335,0.875141,0,0.110039,1.192457,
+ 0.987655,0.110069,0.111458,0.285987,0.003291,0.040193,
+ 0.987543,0.10011,0.121395,0.20782,0,0.730756,
+ 0.988599,0.100217,0.11238,0.286315,0,0.040239,
+ 0.987543,0.10011,0.121395,0.20782,0,0.730756,
+ 0.987655,0.110069,0.111458,0.285987,0.003291,0.040193,
+ 0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+ -0.231735,0.965999,0.114651,-0.05696,0.212579,1.001864,
+ -0.013108,0.99872,0.048851,0,0.292672,0.308415,
+ -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+ -0.013108,0.99872,0.048851,0,0.292672,0.308415,
+ -0.231735,0.965999,0.114651,-0.05696,0.212579,1.001864,
+ 0.062068,0.99278,0.102645,0,0.220078,1.001864,
+ 0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+ 0.518618,0.851337,0.079118,0.144703,0.250479,0.020337,
+ 0.427508,0.900816,0.075942,0.143524,0.251128,0.020171,
+ 0.518618,0.851337,0.079118,0.144703,0.250479,0.020337,
+ 0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+ 0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+ 0.879378,0.465339,0.100771,0.248668,0.144018,0.034948,
+ 0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+ 0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+ 0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+ 0.879378,0.465339,0.100771,0.248668,0.144018,0.034948,
+ 0.824908,0.557247,0.094881,0.247339,0.146303,0.034761,
+ 0.963188,0.245466,0.109611,0.27676,0.074466,0.038896,
+ 0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+ 0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+ 0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+ 0.963188,0.245466,0.109611,0.27676,0.074466,0.038896,
+ 0.933915,0.341689,0.105128,0.275831,0.077426,0.038766,
+ 0.879378,0.465339,0.100771,0.248668,0.144018,0.034948,
+ 0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+ 0.933915,0.341689,0.105128,0.275831,0.077426,0.038766,
+ 0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+ 0.733544,0.673775,0.089114,0.20373,0.204036,0.028632,
+ 0.656362,0.749796,0.083638,0.202309,0.205477,0.028433,
+ 0.733544,0.673775,0.089114,0.20373,0.204036,0.028632,
+ 0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+ 0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+ -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+ -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+ -0.24095,0.817816,0.522609,-0.049329,0.184099,1.111903,
+ -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+ -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+ 0.018377,0.706803,0.707171,0,0.155619,1.157482,
+ 0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+ 0.656362,0.749796,0.083638,0.202309,0.205477,0.028433,
+ 0.518618,0.851337,0.079118,0.144703,0.250479,0.020337,
+ 0.790198,0.60634,0.089097,0.216049,0.187728,0.030364,
+ 0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+ 0.824908,0.557247,0.094881,0.247339,0.146303,0.034761,
+ 0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+ 0.790198,0.60634,0.089097,0.216049,0.187728,0.030364,
+ 0.733544,0.673775,0.089114,0.20373,0.204036,0.028632,
+ -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+ -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+ 0.048912,0.971204,0.233174,0,0.212579,1.058824,
+ -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+ -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+ -0.24095,0.817816,0.522609,-0.049329,0.184099,1.111903,
+ 0.963188,0.245466,0.109611,0.27676,0.074466,0.038896,
+ 0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+ 0.987655,0.110069,0.111458,0.285987,0.003291,0.040193,
+ -0.063714,0.27702,0.958749,-0.014742,0.05502,1.214443,
+ 0.022695,0.483335,0.875141,0,0.110039,1.192457,
+ -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+ 0.022695,0.483335,0.875141,0,0.110039,1.192457,
+ -0.063714,0.27702,0.958749,-0.014742,0.05502,1.214443,
+ 0.005074,0.25872,0.965939,0,0.05696,1.214443,
+ -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+ 0.062068,0.99278,0.102645,0,0.220078,1.001864,
+ -0.231735,0.965999,0.114651,-0.05696,0.212579,1.001864,
+ 0.062068,0.99278,0.102645,0,0.220078,1.001864,
+ -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+ 0.048912,0.971204,0.233174,0,0.212579,1.058824,
+ -0.707107,0,-0.707107,-0.282555,0.07571,0.282555,
+ -0.707107,0,-0.707107,-0.155102,0,0.155102,
+ -0.707107,0,-0.707107,-0.292581,0,0.292581,
+ -0.707107,0,-0.707107,-0.155102,0,0.155102,
+ -0.707107,0,-0.707107,-0.282555,0.07571,0.282555,
+ -0.707107,0,-0.707107,-0.155102,0.158996,0.155102,
+ -0.707107,0,-0.707107,-0.155102,0.158996,0.155102,
+ -0.707107,0,-0.707107,-0.282555,0.07571,0.282555,
+ -0.707107,0,-0.707107,-0.253185,0.146177,0.253185,
+ -0.707107,0,-0.707107,-0.155102,0.158996,0.155102,
+ -0.707107,0,-0.707107,-0.253185,0.146177,0.253185,
+ -0.707107,0,-0.707107,-0.206534,0.206534,0.206534,
+ -0.707107,0,-0.707107,-0.155102,0.158996,0.155102,
+ -0.707107,0,-0.707107,-0.206534,0.206534,0.206534,
+ -0.707107,0,-0.707107,0,0.158996,0,
+ -0.707107,0,-0.707107,0,0.158996,0,
+ -0.707107,0,-0.707107,-0.206534,0.206534,0.206534,
+ -0.707107,0,-0.707107,0,0.290889,0,
+ -0.707107,0,-0.707107,0,0.290889,0,
+ -0.707107,0,-0.707107,-0.206534,0.206534,0.206534,
+ -0.707107,0,-0.707107,-0.20569,0.207176,0.20569,
+ -0.707107,0,-0.707107,0,0.290889,0,
+ -0.707107,0,-0.707107,-0.20569,0.207176,0.20569,
+ -0.707107,0,-0.707107,-0.145866,0.252648,0.145866,
+ -0.707107,0,-0.707107,0,0.290889,0,
+ -0.707107,0,-0.707107,-0.145866,0.252648,0.145866,
+ -0.707107,0,-0.707107,-0.0754,0.281398,0.0754,
+ 0.139173,0,-0.990268,0.07279,0.281365,0.01023,
+ 0.139173,0,-0.990268,0,0.158996,0,
+ 0.139173,0,-0.990268,0,0.290889,0,
+ 0.139173,0,-0.990268,0,0.158996,0,
+ 0.139173,0,-0.990268,0.07279,0.281365,0.01023,
+ 0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+ 0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+ 0.139173,0,-0.990268,0.07279,0.281365,0.01023,
+ 0.139173,0,-0.990268,0.075296,0.280143,0.010582,
+ 0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+ 0.139173,0,-0.990268,0.075296,0.280143,0.010582,
+ 0.139173,0,-0.990268,0.143524,0.251128,0.020171,
+ 0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+ 0.139173,0,-0.990268,0.143524,0.251128,0.020171,
+ 0.139173,0,-0.990268,0.144703,0.250479,0.020337,
+ 0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+ 0.139173,0,-0.990268,0.144703,0.250479,0.020337,
+ 0.139173,0,-0.990268,0.202309,0.205477,0.028433,
+ 0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+ 0.139173,0,-0.990268,0.202309,0.205477,0.028433,
+ 0.139173,0,-0.990268,0.20373,0.204036,0.028632,
+ 0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+ 0.139173,0,-0.990268,0.20373,0.204036,0.028632,
+ 0.139173,0,-0.990268,0.216049,0.187728,0.030364,
+ 0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+ 0.139173,0,-0.990268,0.216049,0.187728,0.030364,
+ 0.139173,0,-0.990268,0.247339,0.146303,0.034761,
+ 0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+ 0.139173,0,-0.990268,0.286315,0,0.040239,
+ 0.139173,0,-0.990268,0.216568,0,0.030437,
+ 0.139173,0,-0.990268,0.286315,0,0.040239,
+ 0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+ 0.139173,0,-0.990268,0.247339,0.146303,0.034761,
+ 0.139173,0,-0.990268,0.286315,0,0.040239,
+ 0.139173,0,-0.990268,0.247339,0.146303,0.034761,
+ 0.139173,0,-0.990268,0.248668,0.144018,0.034948,
+ 0.139173,0,-0.990268,0.286315,0,0.040239,
+ 0.139173,0,-0.990268,0.248668,0.144018,0.034948,
+ 0.139173,0,-0.990268,0.275831,0.077426,0.038766,
+ 0.139173,0,-0.990268,0.286315,0,0.040239,
+ 0.139173,0,-0.990268,0.275831,0.077426,0.038766,
+ 0.139173,0,-0.990268,0.27676,0.074466,0.038896,
+ 0.139173,0,-0.990268,0.286315,0,0.040239,
+ 0.139173,0,-0.990268,0.27676,0.074466,0.038896,
+ 0.139173,0,-0.990268,0.285987,0.003291,0.040193
+};
+static const struct gllist handsy_model_finger_distal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 876, handsy_model_finger_distal_data, 0
+};
+const struct gllist *handsy_model_finger_distal = &handsy_model_finger_distal_frame;
+
+static const float handsy_model_finger_intermediate_data[] = {
+ 0,1,0,-0.191233,0.158996,0.888552,
+ 0,1,0,0,0.158996,1.000796,
+ 0,1,0,-0.156938,0.158996,0.843858,
+ 0,1,0,0,0.158996,1.000796,
+ 0,1,0,-0.191233,0.158996,0.888552,
+ 0,1,0,-0.213293,0.158996,0.941808,
+ 0,1,0,0,0.158996,1.000796,
+ 0,1,0,-0.213293,0.158996,0.941808,
+ 0,1,0,-0.220817,0.158996,0.99896,
+ 0,1,0,0,0.158996,1.000796,
+ 0,1,0,-0.220817,0.158996,0.99896,
+ 0,1,0,-0.213293,0.158996,1.056112,
+ 0,1,0,0,0.158996,1.000796,
+ 0,1,0,-0.213293,0.158996,1.056112,
+ 0,1,0,0.220575,0.158996,1.000796,
+ 0,1,0,0.220575,0.158996,1.000796,
+ 0,1,0,-0.213293,0.158996,1.056112,
+ 0,1,0,0.213293,0.158996,1.056112,
+ 0,1,0,0.213293,0.158996,1.056112,
+ 0,1,0,-0.213293,0.158996,1.056112,
+ 0,1,0,-0.191233,0.158996,1.109368,
+ 0,1,0,0.213293,0.158996,1.056112,
+ 0,1,0,-0.191233,0.158996,1.109368,
+ 0,1,0,0.191233,0.158996,1.109368,
+ 0,1,0,0.191233,0.158996,1.109368,
+ 0,1,0,-0.191233,0.158996,1.109368,
+ 0,1,0,-0.156141,0.158996,1.155101,
+ 0,1,0,0.191233,0.158996,1.109368,
+ 0,1,0,-0.156141,0.158996,1.155101,
+ 0,1,0,0.156141,0.158996,1.155101,
+ 0,1,0,0.156141,0.158996,1.155101,
+ 0,1,0,-0.156141,0.158996,1.155101,
+ 0,1,0,-0.155102,0.158996,1.155898,
+ 0,1,0,0.156141,0.158996,1.155101,
+ 0,1,0,-0.155102,0.158996,1.155898,
+ 0,1,0,0.110408,0.158996,1.190193,
+ 0,1,0,0.110408,0.158996,1.190193,
+ 0,1,0,-0.155102,0.158996,1.155898,
+ 0,1,0,-0.110408,0.158996,1.190193,
+ 0,1,0,0.110408,0.158996,1.190193,
+ 0,1,0,-0.110408,0.158996,1.190193,
+ 0,1,0,-0.057152,0.158996,1.212253,
+ 0,1,0,0.110408,0.158996,1.190193,
+ 0,1,0,-0.057152,0.158996,1.212253,
+ 0,1,0,0.057152,0.158996,1.212253,
+ 0,1,0,0.057152,0.158996,1.212253,
+ 0,1,0,-0.057152,0.158996,1.212253,
+ 0,1,0,0,0.158996,1.219777,
+ 0,1,0,0.220575,0.158996,1.000796,
+ 0,1,0,0.216568,0.158996,0.970359,
+ 0,1,0,0,0.158996,1.000796,
+ -0.707107,0,0.707107,-0.156938,0,0.843858,
+ -0.707107,0,0.707107,-0.293114,0.07854,0.707681,
+ -0.707107,0,0.707107,-0.303917,0,0.696878,
+ -0.707107,0,0.707107,-0.293114,0.07854,0.707681,
+ -0.707107,0,0.707107,-0.156938,0,0.843858,
+ -0.707107,0,0.707107,-0.26163,0.151052,0.739165,
+ -0.707107,0,0.707107,-0.26163,0.151052,0.739165,
+ -0.707107,0,0.707107,-0.156938,0,0.843858,
+ -0.707107,0,0.707107,-0.212119,0.212119,0.788676,
+ -0.707107,0,0.707107,-0.212119,0.212119,0.788676,
+ -0.707107,0,0.707107,-0.156938,0,0.843858,
+ -0.707107,0,0.707107,-0.156938,0.158996,0.843858,
+ -0.707107,0,0.707107,-0.212119,0.212119,0.788676,
+ -0.707107,0,0.707107,-0.156938,0.158996,0.843858,
+ -0.707107,0,0.707107,-0.14863,0.257435,0.852165,
+ -0.707107,0,0.707107,-0.14863,0.257435,0.852165,
+ -0.707107,0,0.707107,-0.156938,0.158996,0.843858,
+ -0.707107,0,0.707107,0,0.158996,1.000796,
+ -0.707107,0,0.707107,-0.14863,0.257435,0.852165,
+ -0.707107,0,0.707107,0,0.158996,1.000796,
+ -0.707107,0,0.707107,-0.076132,0.28413,0.924663,
+ -0.707107,0,0.707107,-0.076132,0.28413,0.924663,
+ -0.707107,0,0.707107,0,0.158996,1.000796,
+ -0.707107,0,0.707107,0,0.290889,1.000796,
+ -0.97545,0.216024,0.042787,-0.293114,0.07854,0.707681,
+ -0.990551,0.130408,0.042462,-0.32007,0,0.32007,
+ -0.990551,0.130408,0.042462,-0.303917,0,0.696878,
+ -0.990551,0.130408,0.042462,-0.32007,0,0.32007,
+ -0.97545,0.216024,0.042787,-0.293114,0.07854,0.707681,
+ -0.952777,0.300643,0.042787,-0.309598,0.082956,0.309598,
+ -0.461128,0.886301,0.042787,-0.163393,0.283005,0.163393,
+ -0.300643,0.952777,0.042787,-0.076132,0.28413,0.924663,
+ -0.216024,0.97545,0.042787,-0.085443,0.318879,0.085443,
+ -0.300643,0.952777,0.042787,-0.076132,0.28413,0.924663,
+ -0.461128,0.886301,0.042787,-0.163393,0.283005,0.163393,
+ -0.536995,0.842499,0.042787,-0.14863,0.257435,0.852165,
+ -0.886301,0.461128,0.042787,-0.26163,0.151052,0.739165,
+ -0.952777,0.300643,0.042787,-0.309598,0.082956,0.309598,
+ -0.97545,0.216024,0.042787,-0.293114,0.07854,0.707681,
+ -0.952777,0.300643,0.042787,-0.309598,0.082956,0.309598,
+ -0.886301,0.461128,0.042787,-0.26163,0.151052,0.739165,
+ -0.842499,0.536995,0.042787,-0.278724,0.160921,0.278724,
+ -0.736753,0.674807,0.042787,-0.212119,0.212119,0.788676,
+ -0.842499,0.536995,0.042787,-0.278724,0.160921,0.278724,
+ -0.886301,0.461128,0.042787,-0.26163,0.151052,0.739165,
+ -0.842499,0.536995,0.042787,-0.278724,0.160921,0.278724,
+ -0.736753,0.674807,0.042787,-0.212119,0.212119,0.788676,
+ -0.674807,0.736753,0.042787,-0.229082,0.229082,0.229082,
+ -0.707107,0,-0.707107,-0.309598,0.082956,0.309598,
+ -0.707107,0,-0.707107,-0.188122,0,0.188122,
+ -0.707107,0,-0.707107,-0.32007,0,0.32007,
+ -0.707107,0,-0.707107,-0.188122,0,0.188122,
+ -0.707107,0,-0.707107,-0.309598,0.082956,0.309598,
+ -0.707107,0,-0.707107,-0.188122,0.191561,0.188122,
+ -0.707107,0,-0.707107,-0.188122,0.191561,0.188122,
+ -0.707107,0,-0.707107,-0.309598,0.082956,0.309598,
+ -0.707107,0,-0.707107,-0.278724,0.160921,0.278724,
+ -0.707107,0,-0.707107,-0.188122,0.191561,0.188122,
+ -0.707107,0,-0.707107,-0.278724,0.160921,0.278724,
+ -0.707107,0,-0.707107,-0.229082,0.229082,0.229082,
+ -0.707107,0,-0.707107,-0.188122,0.191561,0.188122,
+ -0.707107,0,-0.707107,-0.229082,0.229082,0.229082,
+ -0.707107,0,-0.707107,0,0.191561,0,
+ -0.707107,0,-0.707107,0,0.191561,0,
+ -0.707107,0,-0.707107,-0.229082,0.229082,0.229082,
+ -0.707107,0,-0.707107,0,0.333791,0,
+ -0.707107,0,-0.707107,0,0.333791,0,
+ -0.707107,0,-0.707107,-0.229082,0.229082,0.229082,
+ -0.707107,0,-0.707107,-0.163393,0.283005,0.163393,
+ -0.707107,0,-0.707107,0,0.333791,0,
+ -0.707107,0,-0.707107,-0.163393,0.283005,0.163393,
+ -0.707107,0,-0.707107,-0.085443,0.318879,0.085443,
+ -0.674807,0.736753,0.042787,-0.229082,0.229082,0.229082,
+ -0.536995,0.842499,0.042787,-0.14863,0.257435,0.852165,
+ -0.461128,0.886301,0.042787,-0.163393,0.283005,0.163393,
+ -0.536995,0.842499,0.042787,-0.14863,0.257435,0.852165,
+ -0.674807,0.736753,0.042787,-0.229082,0.229082,0.229082,
+ -0.736753,0.674807,0.042787,-0.212119,0.212119,0.788676,
+ -0.843272,0,-0.537487,-0.191233,0.158996,0.888552,
+ -0.793353,0,-0.608761,-0.156938,0,0.843858,
+ -0.887114,0,-0.461551,-0.191233,0,0.888552,
+ -0.793353,0,-0.608761,-0.156938,0,0.843858,
+ -0.843272,0,-0.537487,-0.191233,0.158996,0.888552,
+ -0.793353,0,-0.608761,-0.156938,0.158996,0.843858,
+ -0.522622,0,0.852565,-0.110408,0,1.190193,
+ -0.258819,0,0.965926,-0.057152,0.158996,1.212253,
+ -0.5,0,0.866025,-0.110408,0.158996,1.190193,
+ -0.258819,0,0.965926,-0.057152,0.158996,1.212253,
+ -0.522622,0,0.852565,-0.110408,0,1.190193,
+ -0.258819,0,0.965926,-0.057152,0,1.212253,
+ -1,0,0,-0.220817,0.158996,0.99896,
+ -0.976344,0,-0.216222,-0.213293,0,0.941808,
+ -1,0,0,-0.220817,0,0.99896,
+ -0.976344,0,-0.216222,-0.213293,0,0.941808,
+ -1,0,0,-0.220817,0.158996,0.99896,
+ -0.95365,0,-0.300918,-0.213293,0.158996,0.941808,
+ -0.95365,0,-0.300918,-0.213293,0.158996,0.941808,
+ -0.887114,0,-0.461551,-0.191233,0,0.888552,
+ -0.976344,0,-0.216222,-0.213293,0,0.941808,
+ -0.887114,0,-0.461551,-0.191233,0,0.888552,
+ -0.95365,0,-0.300918,-0.213293,0.158996,0.941808,
+ -0.843272,0,-0.537487,-0.191233,0.158996,0.888552,
+ -0.976344,0,0.216222,-0.213293,0.158996,1.056112,
+ -0.991445,0,0.130526,-0.220575,0,1.000796,
+ -0.95365,0,0.300918,-0.213293,0,1.056112,
+ -0.991445,0,0.130526,-0.220575,0,1.000796,
+ -1,0,0,-0.220817,0.158996,0.99896,
+ -1,0,0,-0.220817,0,0.99896,
+ -1,0,0,-0.220817,0.158996,0.99896,
+ -0.991445,0,0.130526,-0.220575,0,1.000796,
+ -0.976344,0,0.216222,-0.213293,0.158996,1.056112,
+ -0.707107,0,0.707107,-0.156141,0.158996,1.155101,
+ -0.843272,0,0.537487,-0.191233,0,1.109368,
+ -0.707107,0,0.707107,-0.156141,0,1.155101,
+ -0.843272,0,0.537487,-0.191233,0,1.109368,
+ -0.707107,0,0.707107,-0.156141,0.158996,1.155101,
+ -0.887114,0,0.461551,-0.191233,0.158996,1.109368,
+ -0.522622,0,0.852565,-0.110408,0,1.190193,
+ -0.707107,0,0.707107,-0.156141,0.158996,1.155101,
+ -0.707107,0,0.707107,-0.156141,0,1.155101,
+ -0.707107,0,0.707107,-0.156141,0.158996,1.155101,
+ -0.522622,0,0.852565,-0.110408,0,1.190193,
+ -0.608761,0,0.793353,-0.155102,0.158996,1.155898,
+ -0.608761,0,0.793353,-0.155102,0.158996,1.155898,
+ -0.522622,0,0.852565,-0.110408,0,1.190193,
+ -0.5,0,0.866025,-0.110408,0.158996,1.190193,
+ -0.887114,0,0.461551,-0.191233,0.158996,1.109368,
+ -0.95365,0,0.300918,-0.213293,0,1.056112,
+ -0.843272,0,0.537487,-0.191233,0,1.109368,
+ -0.95365,0,0.300918,-0.213293,0,1.056112,
+ -0.887114,0,0.461551,-0.191233,0.158996,1.109368,
+ -0.976344,0,0.216222,-0.213293,0.158996,1.056112,
+ 0.95365,0,0.300918,0.213293,0.158996,1.056112,
+ 0.887114,0,0.461551,0.191233,0,1.109368,
+ 0.976344,0,0.216222,0.213293,0,1.056112,
+ 0.887114,0,0.461551,0.191233,0,1.109368,
+ 0.95365,0,0.300918,0.213293,0.158996,1.056112,
+ 0.843272,0,0.537487,0.191233,0.158996,1.109368,
+ 0,0,1,0,0,1.219777,
+ 0.258819,0,0.965926,0.057152,0.158996,1.212253,
+ 0,0,1,0,0.158996,1.219777,
+ 0.258819,0,0.965926,0.057152,0.158996,1.212253,
+ 0,0,1,0,0,1.219777,
+ 0.258819,0,0.965926,0.057152,0,1.212253,
+ 0.461551,0,0.887114,0.110408,0,1.190193,
+ 0.258819,0,0.965926,0.057152,0.158996,1.212253,
+ 0.258819,0,0.965926,0.057152,0,1.212253,
+ 0.258819,0,0.965926,0.057152,0.158996,1.212253,
+ 0.461551,0,0.887114,0.110408,0,1.190193,
+ 0.537487,0,0.843272,0.110408,0.158996,1.190193,
+ 1,0,0,0.220575,0.158996,1.000796,
+ 0.976344,0,0.216222,0.213293,0,1.056112,
+ 1,0,0,0.220575,0,1.000796,
+ 0.976344,0,0.216222,0.213293,0,1.056112,
+ 1,0,0,0.220575,0.158996,1.000796,
+ 0.95365,0,0.300918,0.213293,0.158996,1.056112,
+ 0,0,1,0,0,1.219777,
+ -0.258819,0,0.965926,-0.057152,0.158996,1.212253,
+ -0.258819,0,0.965926,-0.057152,0,1.212253,
+ -0.258819,0,0.965926,-0.057152,0.158996,1.212253,
+ 0,0,1,0,0,1.219777,
+ 0,0,1,0,0.158996,1.219777,
+ 0.707107,0,0.707107,0.156141,0,1.155101,
+ 0.537487,0,0.843272,0.110408,0.158996,1.190193,
+ 0.461551,0,0.887114,0.110408,0,1.190193,
+ 0.537487,0,0.843272,0.110408,0.158996,1.190193,
+ 0.707107,0,0.707107,0.156141,0,1.155101,
+ 0.707107,0,0.707107,0.156141,0.158996,1.155101,
+ 0.843272,0,0.537487,0.191233,0.158996,1.109368,
+ 0.707107,0,0.707107,0.156141,0,1.155101,
+ 0.887114,0,0.461551,0.191233,0,1.109368,
+ 0.707107,0,0.707107,0.156141,0,1.155101,
+ 0.843272,0,0.537487,0.191233,0.158996,1.109368,
+ 0.707107,0,0.707107,0.156141,0.158996,1.155101,
+ 0.139173,0,-0.990268,0,0.333791,0,
+ 0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+ 0.139173,0,-0.990268,0,0.191561,0,
+ 0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+ 0.139173,0,-0.990268,0,0.333791,0,
+ 0.139173,0,-0.990268,0.086257,0.321915,0.012123,
+ 0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+ 0.139173,0,-0.990268,0.086257,0.321915,0.012123,
+ 0.139173,0,-0.990268,0.166394,0.288203,0.023385,
+ 0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+ 0.139173,0,-0.990268,0.166394,0.288203,0.023385,
+ 0.139173,0,-0.990268,0.235024,0.235024,0.033031,
+ 0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+ 0.139173,0,-0.990268,0.235024,0.235024,0.033031,
+ 0.139173,0,-0.990268,0.249144,0.216485,0.035015,
+ 0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+ 0.139173,0,-0.990268,0.249144,0.216485,0.035015,
+ 0.139173,0,-0.990268,0.287571,0.166029,0.040415,
+ 0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+ 0.139173,0,-0.990268,0.287571,0.166029,0.040415,
+ 0.139173,0,-0.990268,0.261211,0,0.036711,
+ 0.139173,0,-0.990268,0.261211,0,0.036711,
+ 0.139173,0,-0.990268,0.287571,0.166029,0.040415,
+ 0.139173,0,-0.990268,0.331792,0,0.04663,
+ 0.139173,0,-0.990268,0.331792,0,0.04663,
+ 0.139173,0,-0.990268,0.287571,0.166029,0.040415,
+ 0.139173,0,-0.990268,0.320552,0.085892,0.045051,
+ 0.300643,0.952777,0.042787,0.075405,0.281416,0.990198,
+ 0.461128,0.886301,0.042787,0.166394,0.288203,0.023385,
+ 0.216024,0.97545,0.042787,0.086257,0.321915,0.012123,
+ 0.461128,0.886301,0.042787,0.166394,0.288203,0.023385,
+ 0.300643,0.952777,0.042787,0.075405,0.281416,0.990198,
+ 0.536995,0.842499,0.042787,0.145884,0.252679,0.980293,
+ 0.842499,0.536995,0.042787,0.287571,0.166029,0.040415,
+ 0.751338,0.658532,0.042736,0.20657,0.20657,0.971764,
+ 0.886301,0.461128,0.042787,0.253239,0.146207,0.965205,
+ 0.751338,0.658532,0.042736,0.20657,0.20657,0.971764,
+ 0.842499,0.536995,0.042787,0.287571,0.166029,0.040415,
+ 0.792638,0.608212,0.042462,0.249144,0.216485,0.035015,
+ 0.751338,0.658532,0.042736,0.20657,0.20657,0.971764,
+ 0.792638,0.608212,0.042462,0.249144,0.216485,0.035015,
+ 0.674807,0.736753,0.042787,0.235024,0.235024,0.033031,
+ 0.990551,0.130408,0.042462,0.331792,0,0.04663,
+ 0.97545,0.216024,0.042787,0.282622,0.075728,0.961076,
+ 0.990551,0.130408,0.042462,0.292652,0,0.959666,
+ 0.97545,0.216024,0.042787,0.282622,0.075728,0.961076,
+ 0.990551,0.130408,0.042462,0.331792,0,0.04663,
+ 0.952777,0.300643,0.042787,0.320552,0.085892,0.045051,
+ 0.536995,0.842499,0.042787,0.145884,0.252679,0.980293,
+ 0.674807,0.736753,0.042787,0.235024,0.235024,0.033031,
+ 0.461128,0.886301,0.042787,0.166394,0.288203,0.023385,
+ 0.674807,0.736753,0.042787,0.235024,0.235024,0.033031,
+ 0.536995,0.842499,0.042787,0.145884,0.252679,0.980293,
+ 0.751338,0.658532,0.042736,0.20657,0.20657,0.971764,
+ 0.952777,0.300643,0.042787,0.320552,0.085892,0.045051,
+ 0.886301,0.461128,0.042787,0.253239,0.146207,0.965205,
+ 0.97545,0.216024,0.042787,0.282622,0.075728,0.961076,
+ 0.886301,0.461128,0.042787,0.253239,0.146207,0.965205,
+ 0.952777,0.300643,0.042787,0.320552,0.085892,0.045051,
+ 0.842499,0.536995,0.042787,0.287571,0.166029,0.040415,
+ 0.991445,0,-0.130526,0.216568,0,0.970359,
+ 1,0,0,0.220575,0.158996,1.000796,
+ 1,0,0,0.220575,0,1.000796,
+ 1,0,0,0.220575,0.158996,1.000796,
+ 0.991445,0,-0.130526,0.216568,0,0.970359,
+ 0.991445,0,-0.130526,0.216568,0.158996,0.970359,
+ 0.139173,0,0.990268,0.292652,0,0.959666,
+ 0.139173,0,0.990268,0.216568,0.158996,0.970359,
+ 0.139173,0,0.990268,0.216568,0,0.970359,
+ 0.139173,0,0.990268,0.216568,0.158996,0.970359,
+ 0.139173,0,0.990268,0.292652,0,0.959666,
+ 0.139173,0,0.990268,0.253239,0.146207,0.965205,
+ 0.139173,0,0.990268,0.253239,0.146207,0.965205,
+ 0.139173,0,0.990268,0.292652,0,0.959666,
+ 0.139173,0,0.990268,0.282622,0.075728,0.961076,
+ 0.139173,0,0.990268,0.216568,0.158996,0.970359,
+ 0.139173,0,0.990268,0,0.290889,1.000796,
+ 0.139173,0,0.990268,0,0.158996,1.000796,
+ 0.139173,0,0.990268,0,0.290889,1.000796,
+ 0.139173,0,0.990268,0.216568,0.158996,0.970359,
+ 0.139173,0,0.990268,0.075405,0.281416,0.990198,
+ 0.139173,0,0.990268,0.075405,0.281416,0.990198,
+ 0.139173,0,0.990268,0.216568,0.158996,0.970359,
+ 0.139173,0,0.990268,0.145884,0.252679,0.980293,
+ 0.139173,0,0.990268,0.145884,0.252679,0.980293,
+ 0.139173,0,0.990268,0.216568,0.158996,0.970359,
+ 0.139173,0,0.990268,0.20657,0.20657,0.971764,
+ 0.139173,0,0.990268,0.20657,0.20657,0.971764,
+ 0.139173,0,0.990268,0.216568,0.158996,0.970359,
+ 0.139173,0,0.990268,0.253239,0.146207,0.965205,
+ 0,0.999082,0.042828,0,0.290889,1.000796,
+ 0.216024,0.97545,0.042787,0.086257,0.321915,0.012123,
+ 0,0.999082,0.042828,0,0.333791,0,
+ 0.216024,0.97545,0.042787,0.086257,0.321915,0.012123,
+ 0,0.999082,0.042828,0,0.290889,1.000796,
+ 0.300643,0.952777,0.042787,0.075405,0.281416,0.990198,
+ -0.216024,0.97545,0.042787,-0.085443,0.318879,0.085443,
+ 0,0.999082,0.042828,0,0.290889,1.000796,
+ 0,0.999082,0.042828,0,0.333791,0,
+ 0,0.999082,0.042828,0,0.290889,1.000796,
+ -0.216024,0.97545,0.042787,-0.085443,0.318879,0.085443,
+ -0.300643,0.952777,0.042787,-0.076132,0.28413,0.924663
+};
+static const struct gllist handsy_model_finger_intermediate_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 327, handsy_model_finger_intermediate_data, 0
+};
+const struct gllist *handsy_model_finger_intermediate = &handsy_model_finger_intermediate_frame;
+
+static const float handsy_model_finger_metacarpal_data[] = {
+ -0.271764,0.083332,0.958749,-0.068185,0.017822,1.409438,
+ -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+ -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+ -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+ -0.271764,0.083332,0.958749,-0.068185,0.017822,1.409438,
+ -0.240936,0.15083,0.958749,-0.061306,0.034429,1.409438,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ -0.193688,0.208049,0.958749,-0.050363,0.04869,1.409438,
+ -0.240936,0.15083,0.958749,-0.061306,0.034429,1.409438,
+ 0.240936,0.15083,0.958749,0.057958,0.034429,1.409438,
+ 0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+ 0.193688,0.208049,0.958749,0.047016,0.04869,1.409438,
+ 0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+ 0.240936,0.15083,0.958749,0.057958,0.034429,1.409438,
+ 0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+ -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+ -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+ -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+ -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+ -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+ -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+ -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+ -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+ -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+ -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+ -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+ -0.707107,0.707107,0,-0.189796,0.188122,1.152459,
+ -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+ -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+ -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+ -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+ -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+ -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+ -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+ -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+ -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+ -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+ -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+ -0.707107,0.707107,0,-0.189796,0.188122,1.152459,
+ 0.063714,0.27702,0.958749,0.016148,0.066511,1.409438,
+ 0,0.258748,0.965945,-0.001674,0.068857,1.409438,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+ -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+ -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+ -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+ -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+ -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+ -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+ -0.669251,0.426569,-0.608393,-0.174654,0.09987,0.979478,
+ -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+ -0.669251,0.426569,-0.608393,-0.174654,0.09987,0.979478,
+ -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+ -0.631406,0.484495,-0.605468,-0.164437,0.125955,0.989696,
+ -0.631406,0.484495,-0.605468,-0.164437,0.125955,0.989696,
+ -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+ -0.560986,0.560986,-0.608761,-0.154077,0.152403,1.000056,
+ -0.73389,0.096619,0.672361,-0.189796,0,1.340581,
+ -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+ -0.860389,0.113272,0.496891,-0.232075,0,1.285481,
+ -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+ -0.73389,0.096619,0.672361,-0.189796,0,1.340581,
+ -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+ -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+ -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+ -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+ -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+ -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+ -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ -0.133242,0.25109,0.958749,-0.036102,0.059632,1.409438,
+ -0.193688,0.208049,0.958749,-0.050363,0.04869,1.409438,
+ 0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+ 0.461551,0.887114,0,0.131348,0.230401,1.152459,
+ 0.518154,0.845276,-0.130482,0.130129,0.228289,1.133935,
+ 0.461551,0.887114,0,0.131348,0.230401,1.152459,
+ 0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+ 0.233224,0.972067,0.026312,0.067184,0.256979,1.152459,
+ 0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+ 0.233224,0.972067,0.026312,0.067184,0.256979,1.152459,
+ -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+ 0.233224,0.972067,0.026312,0.067184,0.256979,1.152459,
+ 0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+ 0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+ 0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+ 0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+ 0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+ 0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+ 0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+ 0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+ 0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+ 0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+ 0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+ 0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+ 0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+ 0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+ 0.063714,0.27702,0.958749,0.016148,0.066511,1.409438,
+ 0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+ 0,0.258748,0.965945,-0.001674,0.068857,1.409438,
+ 0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+ 0.063714,0.27702,0.958749,0.016148,0.066511,1.409438,
+ 0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+ 0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+ 0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+ 0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+ 0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+ 0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+ 0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+ 0.133242,0.25109,0.958749,0.032755,0.059632,1.409438,
+ 0.063714,0.27702,0.958749,0.016148,0.066511,1.409438,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+ -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+ -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+ -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+ -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+ -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+ -0.540992,0.705035,-0.458534,-0.134696,0.185858,1.019437,
+ -0.560986,0.560986,-0.608761,-0.154077,0.152403,1.000056,
+ -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+ 0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+ 0.461551,0.887114,0,0.131348,0.230401,1.152459,
+ 0.233224,0.972067,0.026312,0.067184,0.256979,1.152459,
+ 0.461551,0.887114,0,0.131348,0.230401,1.152459,
+ 0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+ 0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+ 0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+ 0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+ 0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+ 0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+ 0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+ 0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+ -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+ -0.540992,0.705035,-0.458534,-0.134696,0.185858,1.019437,
+ -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+ -0.540992,0.705035,-0.458534,-0.134696,0.185858,1.019437,
+ -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+ -0.496644,0.779191,-0.382369,-0.119932,0.204829,1.0342,
+ -0.496644,0.779191,-0.382369,-0.119932,0.204829,1.0342,
+ -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+ -0.508803,0.828671,-0.233292,-0.130163,0.222551,1.083601,
+ -0.30062,0.039577,0.952922,-0.070531,0,1.409438,
+ -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+ -0.536052,0.070573,0.84123,-0.134696,0,1.38286,
+ -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+ -0.30062,0.039577,0.952922,-0.070531,0,1.409438,
+ -0.271764,0.083332,0.958749,-0.068185,0.017822,1.409438,
+ 0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+ 0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+ 0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+ 0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+ 0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+ 0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+ 0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+ 0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+ 0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+ 0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+ 0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+ 0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ -0.240936,0.15083,0.958749,-0.061306,0.034429,1.409438,
+ -0.271764,0.083332,0.958749,-0.068185,0.017822,1.409438,
+ -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+ -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+ -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+ -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+ -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+ -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+ -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+ 0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+ -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+ 0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+ -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+ 0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+ -0.193688,0.208049,0.958749,-0.050363,0.04869,1.409438,
+ -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+ -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+ -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+ -0.193688,0.208049,0.958749,-0.050363,0.04869,1.409438,
+ -0.133242,0.25109,0.958749,-0.036102,0.059632,1.409438,
+ 0.193688,0.208049,0.958749,0.047016,0.04869,1.409438,
+ 0.133242,0.25109,0.958749,0.032755,0.059632,1.409438,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+ -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+ -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+ -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+ -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+ -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+ 0.30062,0.039577,0.952922,0.067184,0,1.409438,
+ 0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+ 0.271764,0.083332,0.958749,0.064837,0.017822,1.409438,
+ 0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+ 0.30062,0.039577,0.952922,0.067184,0,1.409438,
+ 0.536052,0.070573,0.84123,0.131348,0,1.38286,
+ 0.73389,0.096619,0.672361,0.186448,0,1.340581,
+ 0.828725,0.200239,0.522609,0.220877,0.059632,1.285481,
+ 0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+ 0.828725,0.200239,0.522609,0.220877,0.059632,1.285481,
+ 0.73389,0.096619,0.672361,0.186448,0,1.340581,
+ 0.881074,0.115996,0.458534,0.228728,0,1.285481,
+ 0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+ 0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+ 0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+ 0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+ 0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+ 0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+ 0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+ 0.968364,0.127487,0.21452,0.255305,0,1.221316,
+ 0.98934,0.130249,-0.065125,0.264371,0,1.152459,
+ 0.968364,0.127487,0.21452,0.255305,0,1.221316,
+ 0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+ 0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+ 0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+ 0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+ 0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+ 0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+ 0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+ 0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+ 0.271764,0.083332,0.958749,0.064837,0.017822,1.409438,
+ 0.240936,0.15083,0.958749,0.057958,0.034429,1.409438,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ 0.193688,0.208049,0.958749,0.047016,0.04869,1.409438,
+ 0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+ 0.133242,0.25109,0.958749,0.032755,0.059632,1.409438,
+ 0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+ 0.193688,0.208049,0.958749,0.047016,0.04869,1.409438,
+ 0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+ 0.536052,0.070573,0.84123,0.131348,0,1.38286,
+ 0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+ 0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+ 0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+ 0.536052,0.070573,0.84123,0.131348,0,1.38286,
+ 0.73389,0.096619,0.672361,0.186448,0,1.340581,
+ 0.240936,0.15083,0.958749,0.057958,0.034429,1.409438,
+ 0.193688,0.208049,0.958749,0.047016,0.04869,1.409438,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ 0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+ 0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+ 0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+ 0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+ 0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+ 0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+ 0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+ 0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+ 0.828725,0.200239,0.522609,0.220877,0.059632,1.285481,
+ 0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+ 0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+ 0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+ 0.133242,0.25109,0.958749,0.032755,0.059632,1.409438,
+ 0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+ 0.063714,0.27702,0.958749,0.016148,0.066511,1.409438,
+ 0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+ 0.133242,0.25109,0.958749,0.032755,0.059632,1.409438,
+ 0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+ -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+ -0.789061,0.103882,-0.605468,-0.189796,0,0.964337,
+ -0.860389,0.113272,-0.496891,-0.232075,0,1.019437,
+ -0.789061,0.103882,-0.605468,-0.189796,0,0.964337,
+ -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+ -0.756851,0.23882,-0.608393,-0.186114,0.049421,0.968018,
+ -0.958191,0.126148,-0.256821,-0.258653,0,1.083601,
+ -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+ -0.860389,0.113272,-0.496891,-0.232075,0,1.019437,
+ -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+ -0.958191,0.126148,-0.256821,-0.258653,0,1.083601,
+ -0.919462,0.271766,-0.284135,-0.249897,0.066511,1.083601,
+ -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+ -0.946203,0.12457,0.298635,-0.258653,0,1.221316,
+ -0.860389,0.113272,0.496891,-0.232075,0,1.285481,
+ -0.946203,0.12457,0.298635,-0.258653,0,1.221316,
+ -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+ -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+ -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+ -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+ -0.23131,0.96409,-0.130482,-0.069322,0.252467,1.116977,
+ -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+ -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+ -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+ -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+ -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+ -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+ -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+ -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+ -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+ -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+ -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+ -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+ -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+ -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+ -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+ -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+ -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+ -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+ -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+ -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+ -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+ -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+ -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+ -0.707107,0.707107,0,-0.189796,0.188122,1.152459,
+ -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+ -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+ -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+ -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+ -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+ -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+ -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+ -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+ -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+ -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+ -0.756851,0.23882,-0.608393,-0.186114,0.049421,0.968018,
+ -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+ -0.756851,0.23882,-0.608393,-0.186114,0.049421,0.968018,
+ -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+ -0.669251,0.426569,-0.608393,-0.174654,0.09987,0.979478,
+ -0.240936,0.15083,0.958749,-0.061306,0.034429,1.409438,
+ -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+ -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+ -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+ -0.240936,0.15083,0.958749,-0.061306,0.034429,1.409438,
+ -0.193688,0.208049,0.958749,-0.050363,0.04869,1.409438,
+ -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+ -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+ -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+ -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+ -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+ -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+ -0.919462,0.271766,-0.284135,-0.249897,0.066511,1.083601,
+ -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+ -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+ -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+ -0.919462,0.271766,-0.284135,-0.249897,0.066511,1.083601,
+ -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+ -0.536052,0.070573,0.84123,-0.134696,0,1.38286,
+ -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+ -0.73389,0.096619,0.672361,-0.189796,0,1.340581,
+ -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+ -0.536052,0.070573,0.84123,-0.134696,0,1.38286,
+ -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+ -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+ -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+ -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+ -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+ -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+ -0.707107,0.707107,0,-0.189796,0.188122,1.152459,
+ -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+ 0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+ -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+ 0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+ -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+ 0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+ -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+ 0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+ -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+ 0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+ -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+ 0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+ -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+ -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+ -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+ -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+ -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+ 0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+ -0.133242,0.25109,0.958749,-0.036102,0.059632,1.409438,
+ -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+ -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+ -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+ -0.133242,0.25109,0.958749,-0.036102,0.059632,1.409438,
+ -0.063714,0.27702,0.958749,-0.019495,0.066511,1.409438,
+ -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+ -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+ -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+ -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+ -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+ -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+ -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+ -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+ -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+ -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+ -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+ -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ 0,0.258748,0.965945,-0.001674,0.068857,1.409438,
+ -0.063714,0.27702,0.958749,-0.019495,0.066511,1.409438,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ -0.063714,0.27702,0.958749,-0.019495,0.066511,1.409438,
+ -0.133242,0.25109,0.958749,-0.036102,0.059632,1.409438,
+ -0.373774,0.902371,-0.21452,-0.070531,0.247251,1.083601,
+ -0.496644,0.779191,-0.382369,-0.119932,0.204829,1.0342,
+ -0.508803,0.828671,-0.233292,-0.130163,0.222551,1.083601,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ -0.271764,0.083332,0.958749,-0.068185,0.017822,1.409438,
+ -0.30062,0.039577,0.952922,-0.070531,0,1.409438,
+ -0.23131,0.96409,-0.130482,-0.069322,0.252467,1.116977,
+ -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+ -0.129428,0.983106,-0.129428,-0.03773,0.256551,1.116403,
+ -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+ -0.23131,0.96409,-0.130482,-0.069322,0.252467,1.116977,
+ -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+ -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+ -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+ -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+ -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+ -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+ -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+ -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+ -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+ -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+ -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+ -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+ -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+ 0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+ 0.675426,0.737428,0,0.186448,0.188122,1.152459,
+ 0.461551,0.887114,0,0.131348,0.230401,1.152459,
+ 0.675426,0.737428,0,0.186448,0.188122,1.152459,
+ 0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+ 0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+ 0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+ 0.98934,0.130249,-0.065125,0.264371,0,1.152459,
+ 0.950582,0.281725,-0.130482,0.254081,0.068529,1.142828,
+ 0.30062,0.039577,0.952922,0.067184,0,1.409438,
+ 0.271764,0.083332,0.958749,0.064837,0.017822,1.409438,
+ 0,0.084475,0.996426,-0.001674,0,1.418503,
+ 0.719272,0.682366,-0.130482,0.184019,0.185692,1.126361,
+ 0.843272,0.537487,0,0.228728,0.133022,1.152459,
+ 0.871372,0.472954,-0.130482,0.226616,0.131803,1.133935,
+ 0.843272,0.537487,0,0.228728,0.133022,1.152459,
+ 0.719272,0.682366,-0.130482,0.184019,0.185692,1.126361,
+ 0.675426,0.737428,0,0.186448,0.188122,1.152459,
+ 0.233224,0.972067,0.026312,0.067184,0.256979,1.152459,
+ 0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+ -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+ -0.063714,0.27702,0.958749,-0.019495,0.066511,1.409438,
+ 0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+ -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+ 0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+ -0.063714,0.27702,0.958749,-0.019495,0.066511,1.409438,
+ 0,0.258748,0.965945,-0.001674,0.068857,1.409438,
+ 0.518154,0.845276,-0.130482,0.130129,0.228289,1.133935,
+ 0.675426,0.737428,0,0.186448,0.188122,1.152459,
+ 0.719272,0.682366,-0.130482,0.184019,0.185692,1.126361,
+ 0.675426,0.737428,0,0.186448,0.188122,1.152459,
+ 0.518154,0.845276,-0.130482,0.130129,0.228289,1.133935,
+ 0.461551,0.887114,0,0.131348,0.230401,1.152459,
+ 0.843272,0.537487,0,0.228728,0.133022,1.152459,
+ 0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+ 0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+ 0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+ 0.843272,0.537487,0,0.228728,0.133022,1.152459,
+ 0.675426,0.737428,0,0.186448,0.188122,1.152459,
+ 0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+ 0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+ 0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+ 0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+ 0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+ 0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+ 0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+ 0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+ 0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+ 0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+ 0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+ 0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+ 0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+ 0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+ 0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+ 0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+ 0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+ 0.843272,0.537487,0,0.228728,0.133022,1.152459,
+ 0.871372,0.472954,-0.130482,0.226616,0.131803,1.133935,
+ 0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+ 0.950582,0.281725,-0.130482,0.254081,0.068529,1.142828,
+ 0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+ 0.871372,0.472954,-0.130482,0.226616,0.131803,1.133935,
+ 0.843272,0.537487,0,0.228728,0.133022,1.152459,
+ 0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+ 0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+ 0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+ 0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+ 0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+ 0.828725,0.200239,0.522609,0.220877,0.059632,1.285481,
+ 0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+ 0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+ 0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+ 0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+ 0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+ 0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+ 0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+ 0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+ 0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+ 0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+ 0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+ 0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+ 0.271764,0.083332,0.958749,0.064837,0.017822,1.409438,
+ 0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+ 0.240936,0.15083,0.958749,0.057958,0.034429,1.409438,
+ 0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+ 0.271764,0.083332,0.958749,0.064837,0.017822,1.409438,
+ 0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+ 0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+ 0.881074,0.115996,0.458534,0.228728,0,1.285481,
+ 0.968364,0.127487,0.21452,0.255305,0,1.221316,
+ 0.881074,0.115996,0.458534,0.228728,0,1.285481,
+ 0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+ 0.828725,0.200239,0.522609,0.220877,0.059632,1.285481,
+ 0,0,-1,-0.309053,0.082357,-0.029987,
+ 0,0,-1,-0.001696,0,-0.029987,
+ 0,0,-1,-0.319896,0,-0.029987,
+ 0,0,-1,-0.001696,0,-0.029987,
+ 0,0,-1,-0.309053,0.082357,-0.029987,
+ 0,0,-1,-0.277265,0.1591,-0.029987,
+ 0,0,-1,-0.001696,0,-0.029987,
+ 0,0,-1,-0.277265,0.1591,-0.029987,
+ 0,0,-1,-0.226697,0.225002,-0.029987,
+ 0,0,-1,-0.001696,0,-0.029987,
+ 0,0,-1,-0.226697,0.225002,-0.029987,
+ 0,0,-1,-0.160795,0.275569,-0.029987,
+ 0,0,-1,-0.001696,0,-0.029987,
+ 0,0,-1,-0.160795,0.275569,-0.029987,
+ 0,0,-1,-0.084051,0.307358,-0.029987,
+ 0,0,-1,-0.001696,0,-0.029987,
+ 0,0,-1,-0.084051,0.307358,-0.029987,
+ 0,0,-1,-0.001695,0.3182,-0.029987,
+ 0,0,-1,-0.001696,0,-0.029987,
+ 0,0,-1,-0.001695,0.3182,-0.029987,
+ 0,0,-1,-0.00158,0,-0.029987,
+ 0,0,-1,-0.00158,0,-0.029987,
+ 0,0,-1,-0.001695,0.3182,-0.029987,
+ 0,0,-1,0.080661,0.307357,-0.029987,
+ 0,0,-1,-0.00158,0,-0.029987,
+ 0,0,-1,0.080661,0.307357,-0.029987,
+ 0,0,-1,0,0,-0.029987,
+ 0,0,-1,0,0,-0.029987,
+ 0,0,-1,0.080661,0.307357,-0.029987,
+ 0,0,-1,0.316504,0,-0.029987,
+ 0,0,-1,0.316504,0,-0.029987,
+ 0,0,-1,0.080661,0.307357,-0.029987,
+ 0,0,-1,0.157405,0.275569,-0.029987,
+ 0,0,-1,0.316504,0,-0.029987,
+ 0,0,-1,0.157405,0.275569,-0.029987,
+ 0,0,-1,0.223306,0.225001,-0.029987,
+ 0,0,-1,0.316504,0,-0.029987,
+ 0,0,-1,0.223306,0.225001,-0.029987,
+ 0,0,-1,0.273874,0.1591,-0.029987,
+ 0,0,-1,0.316504,0,-0.029987,
+ 0,0,-1,0.273874,0.1591,-0.029987,
+ 0,0,-1,0.305662,0.082356,-0.029987,
+ -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+ -0.991445,0.130526,0,-0.267718,0,1.152459,
+ -0.946203,0.12457,0.298635,-0.258653,0,1.221316,
+ -0.991445,0.130526,0,-0.267718,0,1.152459,
+ -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+ -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+ -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+ -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+ -0.991445,0.130526,0,-0.267718,0,1.152459,
+ 0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+ 0.45761,0.879539,-0.130403,0.129251,0.226768,1.120589,
+ 0.214376,0.968007,-0.130403,0.065975,0.252467,1.116977,
+ 0.45761,0.879539,-0.130403,0.129251,0.226768,1.120589,
+ 0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+ 0.518154,0.845276,-0.130482,0.130129,0.228289,1.133935,
+ 0.518154,0.845276,-0.130482,0.130129,0.228289,1.133935,
+ 0.719272,0.682366,-0.130482,0.184019,0.185692,1.126361,
+ 0.45761,0.879539,-0.130403,0.129251,0.226768,1.120589,
+ -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+ 0,0.991445,-0.130526,-0.001674,0.261211,1.115748,
+ -0.129428,0.983106,-0.129428,-0.03773,0.256551,1.116403,
+ -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+ 0.214376,0.968007,-0.130403,0.065975,0.252467,1.116977,
+ 0,0.991445,-0.130526,-0.001674,0.261211,1.115748,
+ 0.214376,0.968007,-0.130403,0.065975,0.252467,1.116977,
+ -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+ 0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+ 0.719272,0.682366,-0.130482,0.184019,0.185692,1.126361,
+ 0.871372,0.472954,-0.130482,0.226616,0.131803,1.133935,
+ 0.879539,0.45761,-0.130403,0.225094,0.130924,1.120589,
+ -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+ -0.373774,0.902371,-0.21452,-0.070531,0.247251,1.083601,
+ -0.508803,0.828671,-0.233292,-0.130163,0.222551,1.083601,
+ -0.373774,0.902371,-0.21452,-0.070531,0.247251,1.083601,
+ -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+ -0.298349,0.945507,-0.130403,-0.068262,0.248511,1.08587,
+ -0.298349,0.945507,-0.130403,-0.068262,0.248511,1.08587,
+ -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+ -0.281725,0.950582,-0.130482,-0.06928,0.252311,1.115748,
+ -0.281725,0.950582,-0.130482,-0.06928,0.252311,1.115748,
+ -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+ -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+ -0.281725,0.950582,-0.130482,-0.06928,0.252311,1.115748,
+ -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+ -0.23131,0.96409,-0.130482,-0.069322,0.252467,1.116977,
+ -0.603641,0.78668,-0.129428,-0.186378,0.184704,1.115748,
+ -0.508803,0.828671,-0.233292,-0.130163,0.222551,1.083601,
+ -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+ -0.508803,0.828671,-0.233292,-0.130163,0.222551,1.083601,
+ -0.603641,0.78668,-0.129428,-0.186378,0.184704,1.115748,
+ -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+ -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+ -0.603641,0.78668,-0.129428,-0.186378,0.184704,1.115748,
+ -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+ -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+ -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+ -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+ -0.916109,0.379465,-0.129428,-0.253985,0.067606,1.115748,
+ -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+ -0.919462,0.271766,-0.284135,-0.249897,0.066511,1.083601,
+ -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+ -0.916109,0.379465,-0.129428,-0.253985,0.067606,1.115748,
+ -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+ -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+ -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+ -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+ -0.431564,-0.902025,0.010166,-0.224224,0.12849,1.083601,
+ -0.431564,-0.902025,0.010166,-0.229963,0.131803,1.133935,
+ -0.431564,-0.902025,0.010166,-0.22789,0.130606,1.115748,
+ -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+ -0.983106,0.129428,-0.129428,-0.262885,0,1.115748,
+ -0.991445,0.130526,0,-0.267718,0,1.152459,
+ -0.983106,0.129428,-0.129428,-0.262885,0,1.115748,
+ -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+ -0.958191,0.126148,-0.256821,-0.258653,0,1.083601,
+ -0.958191,0.126148,-0.256821,-0.258653,0,1.083601,
+ -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+ -0.919462,0.271766,-0.284135,-0.249897,0.066511,1.083601,
+ -0.302618,-0.953093,-0.006007,-0.249897,0.066511,1.083601,
+ -0.302618,-0.953093,-0.006007,-0.257428,0.068529,1.142828,
+ -0.302618,-0.953093,-0.006007,-0.253985,0.067606,1.115748,
+ 0.139173,0,0.990268,0.225094,0.130924,1.120589,
+ 0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+ 0.046579,0.093184,0.994559,0.184019,0.185692,1.126361,
+ 0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+ 0.139173,0,0.990268,0.225094,0.130924,1.120589,
+ 0.139173,0,0.990268,0.250793,0.067648,1.116977,
+ 0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+ 0.139173,0,0.990268,0.250793,0.067648,1.116977,
+ 0.139173,0,0.990268,0.259538,0,1.115748,
+ 0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+ 0.139173,0,0.990268,0.259538,0,1.115748,
+ 0.139173,0,0.990268,0.371895,0,1.099957,
+ 0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+ 0.139173,0,0.990268,0.371895,0,1.099957,
+ 0.139173,0,0.990268,0.321932,0.186846,1.106979,
+ 0.139173,0,0.990268,0.321932,0.186846,1.106979,
+ 0.139173,0,0.990268,0.371895,0,1.099957,
+ 0.139173,0,0.990268,0.35919,0.096699,1.101743,
+ -0.78668,0.603641,-0.129428,-0.22789,0.130606,1.115748,
+ -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+ -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+ -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+ -0.78668,0.603641,-0.129428,-0.22789,0.130606,1.115748,
+ -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+ -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+ -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+ -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+ -0.593496,-0.804597,0.019678,-0.183386,0.181712,1.083601,
+ -0.593496,-0.804597,0.019678,-0.187366,0.185692,1.126361,
+ -0.593496,-0.804597,0.019678,-0.186378,0.184704,1.115748,
+ 0.968007,0.214376,-0.130403,0.250793,0.067648,1.116977,
+ 0.98934,0.130249,-0.065125,0.264371,0,1.152459,
+ 0.983106,0.129428,-0.129428,0.259538,0,1.115748,
+ 0.98934,0.130249,-0.065125,0.264371,0,1.152459,
+ 0.968007,0.214376,-0.130403,0.250793,0.067648,1.116977,
+ 0.950582,0.281725,-0.130482,0.254081,0.068529,1.142828,
+ -0.707107,0,0.707107,-0.189796,0,0.964337,
+ -0.707107,0,0.707107,-0.358292,0.09555,0.795841,
+ -0.707107,0,0.707107,-0.370691,0,0.783442,
+ -0.707107,0,0.707107,-0.358292,0.09555,0.795841,
+ -0.707107,0,0.707107,-0.189796,0,0.964337,
+ -0.707107,0,0.707107,-0.321869,0.184852,0.832264,
+ -0.707107,0,0.707107,-0.321869,0.184852,0.832264,
+ -0.707107,0,0.707107,-0.189796,0,0.964337,
+ -0.707107,0,0.707107,-0.291911,0.224602,0.862221,
+ -0.707107,0,0.707107,-0.291911,0.224602,0.862221,
+ -0.707107,0,0.707107,-0.189796,0,0.964337,
+ -0.707107,0,0.707107,-0.263713,0.262018,0.89042,
+ -0.707107,0,0.707107,-0.263713,0.262018,0.89042,
+ -0.707107,0,0.707107,-0.189796,0,0.964337,
+ -0.707107,0,0.707107,-0.187523,0.321863,0.96661,
+ -0.707107,0,0.707107,-0.187523,0.321863,0.96661,
+ -0.707107,0,0.707107,-0.189796,0,0.964337,
+ -0.707107,0,0.707107,-0.186114,0.049421,0.968018,
+ -0.707107,0,0.707107,-0.187523,0.321863,0.96661,
+ -0.707107,0,0.707107,-0.186114,0.049421,0.968018,
+ -0.707107,0,0.707107,-0.174654,0.09987,0.979478,
+ -0.707107,0,0.707107,-0.187523,0.321863,0.96661,
+ -0.707107,0,0.707107,-0.174654,0.09987,0.979478,
+ -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+ -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+ -0.707107,0,0.707107,-0.174654,0.09987,0.979478,
+ -0.707107,0,0.707107,-0.164437,0.125955,0.989696,
+ -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+ -0.707107,0,0.707107,-0.164437,0.125955,0.989696,
+ -0.707107,0,0.707107,-0.154077,0.152403,1.000056,
+ -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+ -0.707107,0,0.707107,-0.154077,0.152403,1.000056,
+ -0.707107,0,0.707107,-0.134696,0.185858,1.019437,
+ -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+ -0.707107,0,0.707107,-0.134696,0.185858,1.019437,
+ -0.707107,0,0.707107,-0.119932,0.204829,1.0342,
+ -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+ -0.707107,0,0.707107,-0.119932,0.204829,1.0342,
+ -0.707123,-0.000029,0.70709,-0.070531,0.247251,1.083601,
+ -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+ -0.707123,-0.000029,0.70709,-0.070531,0.247251,1.083601,
+ -0.707121,-0.000046,0.707093,-0.053235,0.366819,1.100906,
+ -0.707121,-0.000046,0.707093,-0.053235,0.366819,1.100906,
+ -0.707123,-0.000029,0.70709,-0.070531,0.247251,1.083601,
+ -0.707096,-0.000054,0.707118,-0.068262,0.248511,1.08587,
+ -0.707121,-0.000046,0.707093,-0.053235,0.366819,1.100906,
+ -0.707096,-0.000054,0.707118,-0.068262,0.248511,1.08587,
+ -0.7071,-0.000053,0.707114,-0.03773,0.256551,1.116403,
+ 0.879539,0.45761,-0.130403,0.225094,0.130924,1.120589,
+ 0.950582,0.281725,-0.130482,0.254081,0.068529,1.142828,
+ 0.968007,0.214376,-0.130403,0.250793,0.067648,1.116977,
+ 0.950582,0.281725,-0.130482,0.254081,0.068529,1.142828,
+ 0.879539,0.45761,-0.130403,0.225094,0.130924,1.120589,
+ 0.871372,0.472954,-0.130482,0.226616,0.131803,1.133935,
+ -0.281725,0.950582,-0.130482,-0.06928,0.252311,1.115748,
+ -0.129428,0.983106,-0.129428,-0.03773,0.256551,1.116403,
+ -0.298349,0.945507,-0.130403,-0.068262,0.248511,1.08587,
+ -0.129428,0.983106,-0.129428,-0.03773,0.256551,1.116403,
+ -0.281725,0.950582,-0.130482,-0.06928,0.252311,1.115748,
+ -0.23131,0.96409,-0.130482,-0.069322,0.252467,1.116977,
+ 0,0.139173,0.990268,-0.03773,0.256551,1.116403,
+ 0,0.139173,0.990268,-0.001695,0.373591,1.099954,
+ 0,0.139173,0.990268,-0.053235,0.366819,1.100906,
+ 0,0.139173,0.990268,-0.001695,0.373591,1.099954,
+ 0,0.139173,0.990268,-0.03773,0.256551,1.116403,
+ 0,0.139173,0.990268,-0.001674,0.261211,1.115748,
+ 0,0.139173,0.990268,-0.001695,0.373591,1.099954,
+ 0,0.139173,0.990268,-0.001674,0.261211,1.115748,
+ 0,0.139173,0.990268,0.095004,0.360886,1.10174,
+ 0,0.139173,0.990268,0.095004,0.360886,1.10174,
+ 0,0.139173,0.990268,-0.001674,0.261211,1.115748,
+ 0,0.139173,0.990268,0.065975,0.252467,1.116977,
+ 0,0.139173,0.990268,0.095004,0.360886,1.10174,
+ 0,0.139173,0.990268,0.065975,0.252467,1.116977,
+ 0,0.139173,0.990268,0.129251,0.226768,1.120589,
+ 0,0.139173,0.990268,0.095004,0.360886,1.10174,
+ 0,0.139173,0.990268,0.129251,0.226768,1.120589,
+ -0.000013,0.139173,0.990268,0.185151,0.323627,1.106976,
+ -0.000013,0.139173,0.990268,0.185151,0.323627,1.106976,
+ 0,0.139173,0.990268,0.129251,0.226768,1.120589,
+ 0.046579,0.093184,0.994559,0.184019,0.185692,1.126361,
+ -0.000013,0.139173,0.990268,0.185151,0.323627,1.106976,
+ 0.046579,0.093184,0.994559,0.184019,0.185692,1.126361,
+ 0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+ -0.97404,0.217777,-0.061794,-0.309053,0.082357,-0.029987,
+ -0.98955,0.130278,-0.061793,-0.319896,0,-0.029987,
+ -0.989173,0.133263,-0.061463,-0.370691,0,0.783442,
+ -0.949542,0.307659,-0.060957,-0.358292,0.09555,0.795841,
+ -0.97404,0.217777,-0.061794,-0.309053,0.082357,-0.029987,
+ -0.989173,0.133263,-0.061463,-0.370691,0,0.783442,
+ -0.660522,0.748734,-0.055749,-0.263713,0.262018,0.89042,
+ -0.528009,0.847482,-0.054603,-0.160795,0.275569,-0.029987,
+ -0.742333,0.667567,-0.057413,-0.226697,0.225002,-0.029987,
+ -0.442076,0.895438,-0.052531,-0.187523,0.321863,0.96661,
+ -0.528009,0.847482,-0.054603,-0.160795,0.275569,-0.029987,
+ -0.660522,0.748734,-0.055749,-0.263713,0.262018,0.89042,
+ -0.442076,0.895438,-0.052531,-0.187523,0.321863,0.96661,
+ -0.290009,0.955643,-0.051395,-0.084051,0.307358,-0.029987,
+ -0.528009,0.847482,-0.054603,-0.160795,0.275569,-0.029987,
+ -0.182842,0.982288,-0.040983,-0.098222,0.360243,1.055911,
+ -0.290009,0.955643,-0.051395,-0.084051,0.307358,-0.029987,
+ -0.442076,0.895438,-0.052531,-0.187523,0.321863,0.96661,
+ -0.882868,0.465741,-0.060243,-0.277265,0.1591,-0.029987,
+ -0.97404,0.217777,-0.061794,-0.309053,0.082357,-0.029987,
+ -0.949542,0.307659,-0.060957,-0.358292,0.09555,0.795841,
+ -0.834162,0.548386,-0.058709,-0.321869,0.184852,0.832264,
+ -0.882868,0.465741,-0.060243,-0.277265,0.1591,-0.029987,
+ -0.949542,0.307659,-0.060957,-0.358292,0.09555,0.795841,
+ 0.706271,0.706269,-0.048625,0.223306,0.225001,-0.029987,
+ 0.841431,0.538172,-0.048629,0.321932,0.186846,1.106979,
+ 0.885777,0.461542,-0.048757,0.273874,0.1591,-0.029987,
+ 0.706276,0.706273,-0.048501,0.262631,0.264326,1.115313,
+ 0.841431,0.538172,-0.048629,0.321932,0.186846,1.106979,
+ 0.706271,0.706269,-0.048625,0.223306,0.225001,-0.029987,
+ -0.742333,0.667567,-0.057413,-0.226697,0.225002,-0.029987,
+ -0.882868,0.465741,-0.060243,-0.277265,0.1591,-0.029987,
+ -0.834162,0.548386,-0.058709,-0.321869,0.184852,0.832264,
+ 0.538174,0.84143,-0.048629,0.185151,0.323627,1.106976,
+ 0.706271,0.706269,-0.048625,0.223306,0.225001,-0.029987,
+ 0.461545,0.885776,-0.048757,0.157405,0.275569,-0.029987,
+ 0.706276,0.706273,-0.048501,0.262631,0.264326,1.115313,
+ 0.706271,0.706269,-0.048625,0.223306,0.225001,-0.029987,
+ 0.538174,0.84143,-0.048629,0.185151,0.323627,1.106976,
+ -0.182842,0.982288,-0.040983,-0.098222,0.360243,1.055911,
+ -0.038606,0.998033,-0.04939,-0.001695,0.3182,-0.029987,
+ -0.290009,0.955643,-0.051395,-0.084051,0.307358,-0.029987,
+ 0.003996,0.999178,-0.040348,-0.001695,0.373591,1.099954,
+ -0.038606,0.998033,-0.04939,-0.001695,0.3182,-0.029987,
+ -0.182842,0.982288,-0.040983,-0.098222,0.360243,1.055911,
+ -0.130511,0.991342,-0.014393,-0.053235,0.366819,1.100906,
+ 0.003996,0.999178,-0.040348,-0.001695,0.373591,1.099954,
+ -0.182842,0.982288,-0.040983,-0.098222,0.360243,1.055911,
+ -0.776405,0.627699,-0.056469,-0.291911,0.224602,0.862221,
+ -0.742333,0.667567,-0.057413,-0.226697,0.225002,-0.029987,
+ -0.834162,0.548386,-0.058709,-0.321869,0.184852,0.832264,
+ -0.742333,0.667567,-0.057413,-0.226697,0.225002,-0.029987,
+ -0.776405,0.627699,-0.056469,-0.291911,0.224602,0.862221,
+ -0.660522,0.748734,-0.055749,-0.263713,0.262018,0.89042,
+ 0.003996,0.999178,-0.040348,-0.001695,0.373591,1.099954,
+ 0.216169,0.975132,-0.048879,0.080661,0.307357,-0.029987,
+ -0.038606,0.998033,-0.04939,-0.001695,0.3182,-0.029987,
+ 0.216169,0.975132,-0.048879,0.080661,0.307357,-0.029987,
+ 0.003996,0.999178,-0.040348,-0.001695,0.373591,1.099954,
+ 0.30134,0.952267,-0.048814,0.095004,0.360886,1.10174,
+ 0.885777,0.461542,-0.048757,0.273874,0.1591,-0.029987,
+ 0.952267,0.301337,-0.048814,0.35919,0.096699,1.101743,
+ 0.975132,0.216167,-0.048879,0.305662,0.082356,-0.029987,
+ 0.841431,0.538172,-0.048629,0.321932,0.186846,1.106979,
+ 0.952267,0.301337,-0.048814,0.35919,0.096699,1.101743,
+ 0.885777,0.461542,-0.048757,0.273874,0.1591,-0.029987,
+ 0.30134,0.952267,-0.048814,0.095004,0.360886,1.10174,
+ 0.461545,0.885776,-0.048757,0.157405,0.275569,-0.029987,
+ 0.216169,0.975132,-0.048879,0.080661,0.307357,-0.029987,
+ 0.538174,0.84143,-0.048629,0.185151,0.323627,1.106976,
+ 0.461545,0.885776,-0.048757,0.157405,0.275569,-0.029987,
+ 0.30134,0.952267,-0.048814,0.095004,0.360886,1.10174,
+ 0.975132,0.216167,-0.048879,0.305662,0.082356,-0.029987,
+ 0.990237,0.130681,-0.048519,0.371895,0,1.099957,
+ 0.990276,0.130371,-0.048544,0.316504,0,-0.029987,
+ 0.990237,0.130681,-0.048519,0.371895,0,1.099957,
+ 0.975132,0.216167,-0.048879,0.305662,0.082356,-0.029987,
+ 0.952267,0.301337,-0.048814,0.35919,0.096699,1.101743
+};
+static const struct gllist handsy_model_finger_metacarpal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 825, handsy_model_finger_metacarpal_data, 0
+};
+const struct gllist *handsy_model_finger_metacarpal = &handsy_model_finger_metacarpal_frame;
+
+static const float handsy_model_finger_proximal_data[] = {
+ -0.707107,0,0.707107,-0.188122,0,2.002282,
+ -0.537487,0,0.843272,-0.133022,0.191561,2.044561,
+ -0.707107,0,0.707107,-0.188122,0.191561,2.002282,
+ -0.537487,0,0.843272,-0.133022,0.191561,2.044561,
+ -0.707107,0,0.707107,-0.188122,0,2.002282,
+ -0.461551,0,0.887114,-0.133022,0,2.044561,
+ 0.866025,0,0.5,0.230401,0,1.947182,
+ 0.707107,0,0.707107,0.188122,0.191561,2.002282,
+ 0.707107,0,0.707107,0.188122,0,2.002282,
+ 0.707107,0,0.707107,0.188122,0.191561,2.002282,
+ 0.866025,0,0.5,0.230401,0,1.947182,
+ 0.866025,0,0.5,0.230401,0.191561,1.947182,
+ -0.866025,0,-0.5,-0.230401,0,1.681138,
+ -0.793353,0,-0.608761,-0.188122,0.191561,1.626038,
+ -0.793353,0,-0.608761,-0.188122,0,1.626038,
+ -0.793353,0,-0.608761,-0.188122,0.191561,1.626038,
+ -0.866025,0,-0.5,-0.230401,0,1.681138,
+ -0.866025,0,-0.5,-0.230401,0.191561,1.681138,
+ -0.866025,0,0.5,-0.230401,0.191561,1.947182,
+ -0.965926,0,0.258819,-0.256979,0,1.883018,
+ -0.866025,0,0.5,-0.230401,0,1.947182,
+ -0.965926,0,0.258819,-0.256979,0,1.883018,
+ -0.866025,0,0.5,-0.230401,0.191561,1.947182,
+ -0.965926,0,0.258819,-0.256979,0.191561,1.883018,
+ -0.461551,0,0.887114,-0.133022,0,2.044561,
+ -0.300918,0,0.95365,-0.068857,0.191561,2.071139,
+ -0.537487,0,0.843272,-0.133022,0.191561,2.044561,
+ -0.300918,0,0.95365,-0.068857,0.191561,2.071139,
+ -0.461551,0,0.887114,-0.133022,0,2.044561,
+ -0.216222,0,0.976344,-0.068857,0,2.071139,
+ 0.043842,0,0.999038,0,0,2.080205,
+ 0.216222,0,0.976344,0.068857,0.191561,2.071139,
+ -0.043842,0,0.999038,0,0.191561,2.080205,
+ 0.216222,0,0.976344,0.068857,0.191561,2.071139,
+ 0.043842,0,0.999038,0,0,2.080205,
+ 0.300918,0,0.95365,0.068857,0,2.071139,
+ -1,0,0,-0.266045,0.191561,1.81416,
+ -0.976344,0,-0.216222,-0.256979,0,1.745303,
+ -1,0,0,-0.266045,0,1.81416,
+ -0.976344,0,-0.216222,-0.256979,0,1.745303,
+ -1,0,0,-0.266045,0.191561,1.81416,
+ -0.95365,0,-0.300918,-0.256979,0.191561,1.745303,
+ -0.965926,0,0.258819,-0.256979,0,1.883018,
+ -1,0,0,-0.266045,0.191561,1.81416,
+ -1,0,0,-0.266045,0,1.81416,
+ -1,0,0,-0.266045,0.191561,1.81416,
+ -0.965926,0,0.258819,-0.256979,0,1.883018,
+ -0.965926,0,0.258819,-0.256979,0.191561,1.883018,
+ -0.95365,0,-0.300918,-0.256979,0.191561,1.745303,
+ -0.866025,0,-0.5,-0.230401,0,1.681138,
+ -0.976344,0,-0.216222,-0.256979,0,1.745303,
+ -0.866025,0,-0.5,-0.230401,0,1.681138,
+ -0.95365,0,-0.300918,-0.256979,0.191561,1.745303,
+ -0.866025,0,-0.5,-0.230401,0.191561,1.681138,
+ 0.300918,0,0.95365,0.068857,0,2.071139,
+ 0.461551,0,0.887114,0.133022,0.191561,2.044561,
+ 0.216222,0,0.976344,0.068857,0.191561,2.071139,
+ 0.461551,0,0.887114,0.133022,0.191561,2.044561,
+ 0.300918,0,0.95365,0.068857,0,2.071139,
+ 0.537487,0,0.843272,0.133022,0,2.044561,
+ 0.537487,0,0.843272,0.133022,0,2.044561,
+ 0.707107,0,0.707107,0.188122,0.191561,2.002282,
+ 0.461551,0,0.887114,0.133022,0.191561,2.044561,
+ 0.707107,0,0.707107,0.188122,0.191561,2.002282,
+ 0.537487,0,0.843272,0.133022,0,2.044561,
+ 0.707107,0,0.707107,0.188122,0,2.002282,
+ -0.216222,0,0.976344,-0.068857,0,2.071139,
+ -0.043842,0,0.999038,0,0.191561,2.080205,
+ -0.300918,0,0.95365,-0.068857,0.191561,2.071139,
+ -0.043842,0,0.999038,0,0.191561,2.080205,
+ -0.216222,0,0.976344,-0.068857,0,2.071139,
+ 0.043842,0,0.999038,0,0,2.080205,
+ 1,0,0,0.266045,0.191561,1.81416,
+ 0.976344,0,0.216222,0.256979,0,1.883018,
+ 1,0,0,0.266045,0,1.81416,
+ 0.976344,0,0.216222,0.256979,0,1.883018,
+ 1,0,0,0.266045,0.191561,1.81416,
+ 0.95365,0,0.300918,0.256979,0.191561,1.883018,
+ 0.95365,0,0.300918,0.256979,0.191561,1.883018,
+ 0.866025,0,0.5,0.230401,0,1.947182,
+ 0.976344,0,0.216222,0.256979,0,1.883018,
+ 0.866025,0,0.5,0.230401,0,1.947182,
+ 0.95365,0,0.300918,0.256979,0.191561,1.883018,
+ 0.866025,0,0.5,0.230401,0.191561,1.947182,
+ -0.707107,0,0.707107,-0.188122,0,2.002282,
+ -0.866025,0,0.5,-0.230401,0.191561,1.947182,
+ -0.866025,0,0.5,-0.230401,0,1.947182,
+ -0.866025,0,0.5,-0.230401,0.191561,1.947182,
+ -0.707107,0,0.707107,-0.188122,0,2.002282,
+ -0.707107,0,0.707107,-0.188122,0.191561,2.002282,
+ 0,1,0,-0.230401,0.191561,1.681138,
+ 0,0.999802,0.019917,0,0.191561,1.81416,
+ 0,1,0,-0.188122,0.191561,1.626038,
+ 0,0.999802,0.019917,0,0.191561,1.81416,
+ 0,1,0,-0.230401,0.191561,1.681138,
+ 0,1,0,-0.256979,0.191561,1.745303,
+ 0,0.999802,0.019917,0,0.191561,1.81416,
+ 0,1,0,-0.256979,0.191561,1.745303,
+ 0,0.99969,0.024899,-0.266045,0.191561,1.81416,
+ 0,0.999802,0.019917,0,0.191561,1.81416,
+ 0,0.99969,0.024899,-0.266045,0.191561,1.81416,
+ 0,0.999449,0.033205,0.266045,0.191561,1.81416,
+ 0,0.999449,0.033205,0.266045,0.191561,1.81416,
+ 0,0.99969,0.024899,-0.266045,0.191561,1.81416,
+ 0,1,0,0.256979,0.191561,1.883018,
+ 0,1,0,0.256979,0.191561,1.883018,
+ 0,0.99969,0.024899,-0.266045,0.191561,1.81416,
+ 0,1,0,-0.256979,0.191561,1.883018,
+ 0,1,0,0.256979,0.191561,1.883018,
+ 0,1,0,-0.256979,0.191561,1.883018,
+ 0,1,0,-0.230401,0.191561,1.947182,
+ 0,1,0,0.256979,0.191561,1.883018,
+ 0,1,0,-0.230401,0.191561,1.947182,
+ 0,1,0,0.230401,0.191561,1.947182,
+ 0,1,0,0.230401,0.191561,1.947182,
+ 0,1,0,-0.230401,0.191561,1.947182,
+ 0,1,0,-0.188122,0.191561,2.002282,
+ 0,1,0,0.230401,0.191561,1.947182,
+ 0,1,0,-0.188122,0.191561,2.002282,
+ 0,1,0,0.188122,0.191561,2.002282,
+ 0,1,0,0.188122,0.191561,2.002282,
+ 0,1,0,-0.188122,0.191561,2.002282,
+ 0,1,0,-0.133022,0.191561,2.044561,
+ 0,1,0,0.188122,0.191561,2.002282,
+ 0,1,0,-0.133022,0.191561,2.044561,
+ 0,1,0,0.133022,0.191561,2.044561,
+ 0,1,0,0.133022,0.191561,2.044561,
+ 0,1,0,-0.133022,0.191561,2.044561,
+ 0,1,0,-0.068857,0.191561,2.071139,
+ 0,1,0,0.133022,0.191561,2.044561,
+ 0,1,0,-0.068857,0.191561,2.071139,
+ 0,1,0,0.068857,0.191561,2.071139,
+ 0,1,0,0.068857,0.191561,2.071139,
+ 0,1,0,-0.068857,0.191561,2.071139,
+ 0,1,0,0,0.191561,2.080205,
+ 0,0.999449,0.033205,0.266045,0.191561,1.81416,
+ 0,1,0,0.261211,0.191561,1.777449,
+ 0,0.999802,0.019917,0,0.191561,1.81416,
+ -0.707107,0,0.707107,-0.188122,0.191561,1.626038,
+ -0.707107,0,0.707107,-0.342487,0,1.471673,
+ -0.707107,0,0.707107,-0.188122,0,1.626038,
+ -0.707107,0,0.707107,-0.342487,0,1.471673,
+ -0.707107,0,0.707107,-0.188122,0.191561,1.626038,
+ -0.707107,0,0.707107,-0.330524,0.088564,1.483636,
+ -0.707107,0,0.707107,-0.330524,0.088564,1.483636,
+ -0.707107,0,0.707107,-0.188122,0.191561,1.626038,
+ -0.707107,0,0.707107,-0.295571,0.170648,1.518589,
+ -0.707107,0,0.707107,-0.295571,0.170648,1.518589,
+ -0.707107,0,0.707107,-0.188122,0.191561,1.626038,
+ -0.707107,0,0.707107,-0.240341,0.240341,1.573819,
+ -0.707107,0,0.707107,-0.240341,0.240341,1.573819,
+ -0.707107,0,0.707107,-0.188122,0.191561,1.626038,
+ -0.707107,0,0.707107,0,0.191561,1.81416,
+ -0.707107,0,0.707107,-0.240341,0.240341,1.573819,
+ -0.707107,0,0.707107,0,0.191561,1.81416,
+ -0.707107,0,0.707107,0,0.333791,1.81416,
+ -0.707107,0,0.707107,-0.240341,0.240341,1.573819,
+ -0.707107,0,0.707107,0,0.333791,1.81416,
+ -0.707107,0,0.707107,-0.169041,0.292788,1.645119,
+ -0.707107,0,0.707107,-0.169041,0.292788,1.645119,
+ -0.707107,0,0.707107,0,0.333791,1.81416,
+ -0.707107,0,0.707107,-0.086963,0.32455,1.727197,
+ -0.975964,0.216853,0.021658,-0.330524,0.088564,1.483636,
+ -0.991173,0.130825,0.021489,-0.366435,0.000001,0.366435,
+ -0.991152,0.130986,0.021476,-0.342487,0,1.471673,
+ -0.991173,0.130825,0.021489,-0.366435,0.000001,0.366435,
+ -0.975964,0.216853,0.021658,-0.330524,0.088564,1.483636,
+ -0.953119,0.301819,0.021666,-0.35419,0.094905,0.35419,
+ -0.896223,0.443073,0.021681,-0.295571,0.170648,1.518589,
+ -0.953119,0.301819,0.021666,-0.35419,0.094905,0.35419,
+ -0.975964,0.216853,0.021658,-0.330524,0.088564,1.483636,
+ -0.953119,0.301819,0.021666,-0.35419,0.094905,0.35419,
+ -0.896223,0.443073,0.021681,-0.295571,0.170648,1.518589,
+ -0.92339,0.383259,0.021542,-0.346541,0.113724,0.346541,
+ -0.842269,0.538618,0.02175,-0.31821,0.183719,0.31821,
+ -0.92339,0.383259,0.021542,-0.346541,0.113724,0.346541,
+ -0.896223,0.443073,0.021681,-0.295571,0.170648,1.518589,
+ -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+ -0.842269,0.538618,0.02175,-0.31821,0.183719,0.31821,
+ -0.896223,0.443073,0.021681,-0.295571,0.170648,1.518589,
+ -0.842269,0.538618,0.02175,-0.31821,0.183719,0.31821,
+ -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+ -0.792488,0.609503,0.021646,-0.307808,0.19758,0.307808,
+ -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+ -0.793166,0.608618,0.021712,-0.288583,0.223321,0.288583,
+ -0.792488,0.609503,0.021646,-0.307808,0.19758,0.307808,
+ -0.793166,0.608618,0.021712,-0.288583,0.223321,0.288583,
+ -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+ -0.706937,0.706937,0.0219,-0.26068,0.26068,0.26068,
+ -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+ -0.60721,0.794242,0.021817,-0.193727,0.313888,0.193727,
+ -0.706937,0.706937,0.0219,-0.26068,0.26068,0.26068,
+ -0.60721,0.794242,0.021817,-0.193727,0.313888,0.193727,
+ -0.498092,0.866843,0.022094,-0.169041,0.292788,1.645119,
+ -0.498727,0.866479,0.022051,-0.185142,0.320676,0.185142,
+ -0.498092,0.866843,0.022094,-0.169041,0.292788,1.645119,
+ -0.60721,0.794242,0.021817,-0.193727,0.313888,0.193727,
+ -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+ -0.498092,0.866843,0.022094,-0.169041,0.292788,1.645119,
+ -0.380786,0.924402,0.021972,-0.101338,0.357372,0.101338,
+ -0.498727,0.866479,0.022051,-0.185142,0.320676,0.185142,
+ -0.380786,0.924402,0.021972,-0.101338,0.357372,0.101338,
+ -0.230952,0.97271,0.022268,-0.086963,0.32455,1.727197,
+ -0.215222,0.976313,0.022187,-0.09634,0.359544,0.09634,
+ -0.230952,0.97271,0.022268,-0.086963,0.32455,1.727197,
+ -0.380786,0.924402,0.021972,-0.101338,0.357372,0.101338,
+ -0.498092,0.866843,0.022094,-0.169041,0.292788,1.645119,
+ -0.230952,0.97271,0.022268,-0.086963,0.32455,1.727197,
+ 0.001487,0.999749,0.022361,0,0.373195,0.052449,
+ -0.129511,0.991332,0.022072,-0.002638,0.372856,0.052402,
+ 0.001487,0.999749,0.022361,0,0.373195,0.052449,
+ -0.230952,0.97271,0.022268,-0.086963,0.32455,1.727197,
+ 0.001487,0.999749,0.022361,0,0.333791,1.81416,
+ 0.300843,0.953412,0.02234,0.0966,0.360517,0.050667,
+ 0.461436,0.886892,0.02234,0.167158,0.289526,1.790668,
+ 0.537353,0.843061,0.02234,0.186676,0.323332,0.045441,
+ 0.461436,0.886892,0.02234,0.167158,0.289526,1.790668,
+ 0.300843,0.953412,0.02234,0.0966,0.360517,0.050667,
+ 0.194766,0.980596,0.022313,0.086462,0.32268,1.802009,
+ 0.991201,0.130494,0.02217,0.373195,0,0.052449,
+ 0.976101,0.216168,0.02234,0.323399,0.086654,1.768709,
+ 0.991201,0.130494,0.02217,0.334843,0,1.767101,
+ 0.976101,0.216168,0.02234,0.323399,0.086654,1.768709,
+ 0.991201,0.130494,0.02217,0.373195,0,0.052449,
+ 0.953412,0.300843,0.02234,0.360517,0.0966,0.050667,
+ 0.843061,0.537353,0.02234,0.323332,0.186676,0.045441,
+ 0.725293,0.688078,0.022354,0.236551,0.236551,1.780915,
+ 0.886892,0.461436,0.02234,0.28986,0.167351,1.773423,
+ 0.725293,0.688078,0.022354,0.236551,0.236551,1.780915,
+ 0.843061,0.537353,0.02234,0.323332,0.186676,0.045441,
+ 0.793158,0.608612,0.02217,0.280033,0.243325,0.039356,
+ 0.725293,0.688078,0.022354,0.236551,0.236551,1.780915,
+ 0.793158,0.608612,0.02217,0.280033,0.243325,0.039356,
+ 0.70693,0.70693,0.022361,0.264131,0.264131,0.037121,
+ 0.537353,0.843061,0.02234,0.186676,0.323332,0.045441,
+ 0.725293,0.688078,0.022354,0.236551,0.236551,1.780915,
+ 0.70693,0.70693,0.022361,0.264131,0.264131,0.037121,
+ 0.725293,0.688078,0.022354,0.236551,0.236551,1.780915,
+ 0.537353,0.843061,0.02234,0.186676,0.323332,0.045441,
+ 0.461436,0.886892,0.02234,0.167158,0.289526,1.790668,
+ 0.953412,0.300843,0.02234,0.360517,0.0966,0.050667,
+ 0.886892,0.461436,0.02234,0.28986,0.167351,1.773423,
+ 0.976101,0.216168,0.02234,0.323399,0.086654,1.768709,
+ 0.886892,0.461436,0.02234,0.28986,0.167351,1.773423,
+ 0.953412,0.300843,0.02234,0.360517,0.0966,0.050667,
+ 0.843061,0.537353,0.02234,0.323332,0.186676,0.045441,
+ 0.130494,0.991201,0.02217,0.037985,0.368209,0.051748,
+ 0.194766,0.980596,0.022313,0.086462,0.32268,1.802009,
+ 0.300843,0.953412,0.02234,0.0966,0.360517,0.050667,
+ 0.194766,0.980596,0.022313,0.086462,0.32268,1.802009,
+ 0.130494,0.991201,0.02217,0.037985,0.368209,0.051748,
+ 0.001487,0.999749,0.022361,0,0.373195,0.052449,
+ 0.194766,0.980596,0.022313,0.086462,0.32268,1.802009,
+ 0.001487,0.999749,0.022361,0,0.373195,0.052449,
+ 0.001487,0.999749,0.022361,0,0.333791,1.81416,
+ 0.991445,0,-0.130526,0.261211,0,1.777449,
+ 1,0,0,0.266045,0.191561,1.81416,
+ 1,0,0,0.266045,0,1.81416,
+ 1,0,0,0.266045,0.191561,1.81416,
+ 0.991445,0,-0.130526,0.261211,0,1.777449,
+ 0.991445,0,-0.130526,0.261211,0.191561,1.777449,
+ 0.139173,0,0.990268,0,0.191561,1.81416,
+ 0.139173,0,0.990268,0.086462,0.32268,1.802009,
+ 0.139173,0,0.990268,0,0.333791,1.81416,
+ 0.139173,0,0.990268,0.086462,0.32268,1.802009,
+ 0.139173,0,0.990268,0,0.191561,1.81416,
+ 0.139173,0,0.990268,0.261211,0.191561,1.777449,
+ 0.139173,0,0.990268,0.086462,0.32268,1.802009,
+ 0.139173,0,0.990268,0.261211,0.191561,1.777449,
+ 0.139173,0,0.990268,0.167158,0.289526,1.790668,
+ 0.139173,0,0.990268,0.167158,0.289526,1.790668,
+ 0.139173,0,0.990268,0.261211,0.191561,1.777449,
+ 0.139173,0,0.990268,0.236551,0.236551,1.780915,
+ 0.139173,0,0.990268,0.236551,0.236551,1.780915,
+ 0.139173,0,0.990268,0.261211,0.191561,1.777449,
+ 0.139173,0,0.990268,0.28986,0.167351,1.773423,
+ 0.139173,0,0.990268,0.28986,0.167351,1.773423,
+ 0.139173,0,0.990268,0.261211,0.191561,1.777449,
+ 0.139173,0,0.990268,0.261211,0,1.777449,
+ 0.139173,0,0.990268,0.28986,0.167351,1.773423,
+ 0.139173,0,0.990268,0.261211,0,1.777449,
+ 0.139173,0,0.990268,0.334843,0,1.767101,
+ 0.139173,0,0.990268,0.28986,0.167351,1.773423,
+ 0.139173,0,0.990268,0.334843,0,1.767101,
+ 0.139173,0,0.990268,0.323399,0.086654,1.768709,
+ -0.215222,0.976313,0.022187,-0.09634,0.359544,0.09634,
+ -0.129511,0.991332,0.022072,-0.002638,0.372856,0.052402,
+ -0.130495,0.991204,0.022019,-0.0515,0.366444,0.0515,
+ -0.129511,0.991332,0.022072,-0.002638,0.372856,0.052402,
+ -0.215222,0.976313,0.022187,-0.09634,0.359544,0.09634,
+ -0.230952,0.97271,0.022268,-0.086963,0.32455,1.727197,
+ -0.707107,0,-0.707107,-0.366435,0.000001,0.366435,
+ -0.707107,0,-0.707107,-0.18444,0.049421,0.18444,
+ -0.707107,0,-0.707107,-0.188122,0,0.188122,
+ -0.707107,0,-0.707107,-0.18444,0.049421,0.18444,
+ -0.707107,0,-0.707107,-0.366435,0.000001,0.366435,
+ -0.707107,0,-0.707107,-0.35419,0.094905,0.35419,
+ -0.707107,0,-0.707107,-0.18444,0.049421,0.18444,
+ -0.707107,0,-0.707107,-0.35419,0.094905,0.35419,
+ -0.707107,0,-0.707107,-0.17298,0.09987,0.17298,
+ -0.707107,0,-0.707107,-0.17298,0.09987,0.17298,
+ -0.707107,0,-0.707107,-0.35419,0.094905,0.35419,
+ -0.707107,0,-0.707107,-0.346541,0.113724,0.346541,
+ -0.707107,0,-0.707107,-0.17298,0.09987,0.17298,
+ -0.707107,0,-0.707107,-0.346541,0.113724,0.346541,
+ -0.707107,0,-0.707107,-0.152403,0.152403,0.152403,
+ -0.707107,0,-0.707107,-0.152403,0.152403,0.152403,
+ -0.707107,0,-0.707107,-0.346541,0.113724,0.346541,
+ -0.707107,0,-0.707107,-0.31821,0.183719,0.31821,
+ -0.707107,0,-0.707107,-0.152403,0.152403,0.152403,
+ -0.707107,0,-0.707107,-0.31821,0.183719,0.31821,
+ -0.707107,0,-0.707107,-0.133022,0.185858,0.133022,
+ -0.707107,0,-0.707107,-0.133022,0.185858,0.133022,
+ -0.707107,0,-0.707107,-0.31821,0.183719,0.31821,
+ -0.707107,0,-0.707107,-0.307808,0.19758,0.307808,
+ -0.707107,0,-0.707107,-0.133022,0.185858,0.133022,
+ -0.707107,0,-0.707107,-0.307808,0.19758,0.307808,
+ -0.707107,0,-0.707107,-0.118258,0.204829,0.118258,
+ -0.707107,0,-0.707107,-0.118258,0.204829,0.118258,
+ -0.707107,0,-0.707107,-0.307808,0.19758,0.307808,
+ -0.707107,0,-0.707107,-0.288583,0.223321,0.288583,
+ -0.707107,0,-0.707107,-0.118258,0.204829,0.118258,
+ -0.707107,0,-0.707107,-0.288583,0.223321,0.288583,
+ -0.707107,0,-0.707107,-0.068857,0.247251,0.068857,
+ -0.707107,0,-0.707107,-0.068857,0.247251,0.068857,
+ -0.707107,0,-0.707107,-0.288583,0.223321,0.288583,
+ -0.707107,0,-0.707107,-0.26068,0.26068,0.26068,
+ -0.707107,0,-0.707107,-0.068857,0.247251,0.068857,
+ -0.707107,0,-0.707107,-0.26068,0.26068,0.26068,
+ -0.707107,0,-0.707107,-0.066588,0.248511,0.066588,
+ -0.707107,0,-0.707107,-0.066588,0.248511,0.066588,
+ -0.707107,0,-0.707107,-0.26068,0.26068,0.26068,
+ -0.707107,0,-0.707107,-0.036056,0.256551,0.036056,
+ -0.707107,0,-0.707107,-0.036056,0.256551,0.036056,
+ -0.707107,0,-0.707107,-0.26068,0.26068,0.26068,
+ -0.707107,0,-0.707107,-0.0515,0.366444,0.0515,
+ -0.707107,0,-0.707107,-0.0515,0.366444,0.0515,
+ -0.707107,0,-0.707107,-0.26068,0.26068,0.26068,
+ -0.707107,0,-0.707107,-0.193727,0.313888,0.193727,
+ -0.707107,0,-0.707107,-0.0515,0.366444,0.0515,
+ -0.707107,0,-0.707107,-0.193727,0.313888,0.193727,
+ -0.707107,0,-0.707107,-0.185142,0.320676,0.185142,
+ -0.707107,0,-0.707107,-0.0515,0.366444,0.0515,
+ -0.707107,0,-0.707107,-0.185142,0.320676,0.185142,
+ -0.707107,0,-0.707107,-0.101338,0.357372,0.101338,
+ -0.707107,0,-0.707107,-0.0515,0.366444,0.0515,
+ -0.707107,0,-0.707107,-0.101338,0.357372,0.101338,
+ -0.707107,0,-0.707107,-0.09634,0.359544,0.09634,
+ 0,0.139173,-0.990268,-0.002638,0.372856,0.052402,
+ 0,0.139173,-0.990268,-0.036056,0.256551,0.036056,
+ 0,0.139173,-0.990268,-0.0515,0.366444,0.0515,
+ 0,0.139173,-0.990268,-0.036056,0.256551,0.036056,
+ 0,0.139173,-0.990268,-0.002638,0.372856,0.052402,
+ 0,0.139173,-0.990268,0,0.261211,0.036711,
+ 0,0.139173,-0.990268,0,0.261211,0.036711,
+ 0,0.139173,-0.990268,-0.002638,0.372856,0.052402,
+ 0,0.139173,-0.990268,0,0.373195,0.052449,
+ 0,0.139173,-0.990268,0,0.261211,0.036711,
+ 0,0.139173,-0.990268,0,0.373195,0.052449,
+ 0,0.139173,-0.990268,0.037985,0.368209,0.051748,
+ 0,0.139173,-0.990268,0,0.261211,0.036711,
+ 0,0.139173,-0.990268,0.037985,0.368209,0.051748,
+ 0,0.139173,-0.990268,0.067648,0.252467,0.035482,
+ 0,0.139173,-0.990268,0.067648,0.252467,0.035482,
+ 0,0.139173,-0.990268,0.037985,0.368209,0.051748,
+ 0,0.139173,-0.990268,0.0966,0.360517,0.050667,
+ 0,0.139173,-0.990268,0.067648,0.252467,0.035482,
+ 0,0.139173,-0.990268,0.0966,0.360517,0.050667,
+ 0,0.139173,-0.990268,0.130924,0.226768,0.03187,
+ 0,0.139173,-0.990268,0.130924,0.226768,0.03187,
+ 0,0.139173,-0.990268,0.0966,0.360517,0.050667,
+ 0,0.139173,-0.990268,0.186676,0.323332,0.045441,
+ 0,0.139173,-0.990268,0.130924,0.226768,0.03187,
+ 0,0.139173,-0.990268,0.186676,0.323332,0.045441,
+ 0.046592,0.093184,-0.994558,0.185692,0.185692,0.026097,
+ 0.046592,0.093184,-0.994558,0.185692,0.185692,0.026097,
+ 0,0.139173,-0.990268,0.186676,0.323332,0.045441,
+ 0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+ 0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+ 0.139173,0,-0.990268,0.226768,0.130924,0.03187,
+ 0.046592,0.093184,-0.994558,0.185692,0.185692,0.026097,
+ 0.139173,0,-0.990268,0.226768,0.130924,0.03187,
+ 0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+ 0.139173,0,-0.990268,0.252467,0.067648,0.035482,
+ 0.139173,0,-0.990268,0.252467,0.067648,0.035482,
+ 0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+ 0.139173,0,-0.990268,0.261211,0,0.036711,
+ 0.139173,0,-0.990268,0.261211,0,0.036711,
+ 0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+ 0.139173,0,-0.990268,0.373195,0,0.052449,
+ 0.139173,0,-0.990268,0.373195,0,0.052449,
+ 0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+ 0.139173,0,-0.990268,0.280033,0.243325,0.039356,
+ 0.139173,0,-0.990268,0.373195,0,0.052449,
+ 0.139173,0,-0.990268,0.280033,0.243325,0.039356,
+ 0.139173,0,-0.990268,0.323332,0.186676,0.045441,
+ 0.139173,0,-0.990268,0.373195,0,0.052449,
+ 0.139173,0,-0.990268,0.323332,0.186676,0.045441,
+ 0.139173,0,-0.990268,0.360517,0.0966,0.050667
+};
+static const struct gllist handsy_model_finger_proximal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 399, handsy_model_finger_proximal_data, 0
+};
+const struct gllist *handsy_model_finger_proximal = &handsy_model_finger_proximal_frame;
+
+static const float handsy_model_palm_data[] = {
+ -0.796278,-0.586351,-0.148771,-1.752137,-0.376692,1.970411,
+ -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+ -0.778493,-0.586351,-0.223921,-1.625487,-0.376692,1.429408,
+ -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+ -0.796278,-0.586351,-0.148771,-1.752137,-0.376692,1.970411,
+ -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+ 0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+ 0.99148,-0.06721,-0.111576,1.895235,-0.072325,2.815815,
+ 0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+ 0.99148,-0.06721,-0.111576,1.895235,-0.072325,2.815815,
+ 0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+ 0.993491,0.012797,-0.11319,1.899624,0.039057,2.815569,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.764255,-0.087329,0.638974,0.764565,-0.313698,1.206288,
+ -0.764255,-0.087329,0.638974,0.777003,-0.306661,1.222126,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.764255,-0.087329,0.638974,0.751492,-0.31812,1.190048,
+ -0.764255,-0.087329,0.638974,0.764565,-0.313698,1.206288,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.764255,-0.087329,0.638974,0.777003,-0.306661,1.222126,
+ -0.704036,0.00442,0.71015,0.782018,-0.302539,1.228689,
+ -0.99549,0.01313,-0.09395,-1.917766,0.038992,2.709671,
+ -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+ -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+ -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+ -0.99549,0.01313,-0.09395,-1.917766,0.038992,2.709671,
+ -0.991055,0.095192,-0.093531,-1.913398,0.150374,2.710083,
+ 0.034078,0,0.999419,1.769671,-0.351987,2.781136,
+ 0.034078,0,0.999419,1.767439,0.429968,2.781212,
+ 0.034078,0,0.999419,1.767439,-0.351987,2.781212,
+ 0.034078,0,0.999419,1.767439,0.429968,2.781212,
+ 0.034078,0,0.999419,1.769671,-0.351987,2.781136,
+ 0.034078,0,0.999419,1.769671,0.429968,2.781136,
+ 0.355139,-0.836018,-0.418271,1.449875,0.1157,1.455178,
+ 0.364775,-0.836018,-0.409895,0.833554,-0.391356,1.942938,
+ 0.36952,-0.836018,-0.405622,1.350509,0.1157,1.368801,
+ 0.364775,-0.836018,-0.409895,0.833554,-0.391356,1.942938,
+ 0.355139,-0.836018,-0.418271,1.449875,0.1157,1.455178,
+ 0.350247,-0.836018,-0.422375,0.953272,-0.391356,2.047007,
+ -0.991055,0.095192,-0.093531,-1.913398,0.150374,2.710083,
+ -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+ -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+ -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+ -0.991055,0.095192,-0.093531,-1.913398,0.150374,2.710083,
+ -0.977364,0.1904,-0.092239,-1.900591,0.254166,2.711292,
+ 0.03368,0,0.999433,1.567503,0.418917,3.581738,
+ -0.029634,0,0.999561,0.500177,0.469339,3.617705,
+ -0.108877,0,0.994055,0.500177,0.418917,3.617705,
+ -0.029634,0,0.999561,0.500177,0.469339,3.617705,
+ 0.03368,0,0.999433,1.567503,0.418917,3.581738,
+ 0.03368,0,0.999433,1.567503,0.469339,3.581738,
+ 0,1,0,0.551147,-0.351987,2.822685,
+ 0,1,0,1.767999,-0.351987,2.786146,
+ 0,1,0,1.767439,-0.351987,2.781212,
+ 0,1,0,1.767999,-0.351987,2.786146,
+ 0,1,0,0.551147,-0.351987,2.822685,
+ 0,1,0,1.567503,-0.351987,3.38714,
+ 0,1,0,1.567503,-0.351987,3.38714,
+ 0,1,0,0.551147,-0.351987,2.822685,
+ 0,1,0,0.500177,-0.351986,3.423108,
+ 0.006145,-0.999897,-0.012996,-1.473662,0.418917,3.101913,
+ 0.01031,-0.999871,-0.012311,-1.343835,0.429973,2.308269,
+ 0.003577,-0.999903,-0.013468,-0.407016,0.429972,2.665229,
+ -0.977364,0.1904,-0.092239,-1.900591,0.254166,2.711292,
+ -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+ -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+ -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+ -0.977364,0.1904,-0.092239,-1.900591,0.254166,2.711292,
+ -0.94405,0.317539,-0.089095,-1.880219,0.343294,2.713215,
+ -0.94405,0.317539,-0.089095,-1.880219,0.343294,2.713215,
+ -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+ -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+ -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+ -0.94405,0.317539,-0.089095,-1.880219,0.343294,2.713215,
+ -0.853307,0.515153,-0.080531,-1.853669,0.411684,2.71572,
+ -0.005944,-0.999865,-0.015303,1.768126,0.429883,2.787255,
+ 0.000209,-0.999904,-0.013883,0.551147,0.429969,2.822685,
+ -0.000476,-0.999903,-0.013922,1.767439,0.429968,2.781212,
+ 0.000209,-0.999904,-0.013883,0.551147,0.429969,2.822685,
+ -0.005944,-0.999865,-0.015303,1.768126,0.429883,2.787255,
+ -0.008676,-0.999834,-0.015995,1.567503,0.418917,3.581738,
+ -0.99332,-0.067292,-0.093745,-1.913398,-0.07239,2.710083,
+ -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+ -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+ -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+ -0.99332,-0.067292,-0.093745,-1.913398,-0.07239,2.710083,
+ -0.99549,0.01313,-0.09395,-1.917766,0.038992,2.709671,
+ -0.853307,0.515153,-0.080531,-1.853669,0.411684,2.71572,
+ -0.802204,0.586352,-0.112519,-1.752137,0.454676,1.970411,
+ -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+ -0.802204,0.586352,-0.112519,-1.752137,0.454676,1.970411,
+ -0.853307,0.515153,-0.080531,-1.853669,0.411684,2.71572,
+ -0.807042,0.585562,-0.076165,-1.822751,0.454676,2.718638,
+ 0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+ 0.993491,0.012797,-0.11319,1.899624,0.039057,2.815569,
+ 0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+ 0.993491,0.012797,-0.11319,1.899624,0.039057,2.815569,
+ 0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+ 0.988875,0.094445,-0.114917,1.895316,0.150435,2.815811,
+ -0.243848,-0.96921,-0.034203,-1.719171,-0.391356,1.9758,
+ -0.400958,-0.915315,-0.037841,-1.822751,-0.376692,2.718638,
+ -0.395209,-0.915619,-0.073838,-1.752137,-0.376692,1.970411,
+ -0.400958,-0.915315,-0.037841,-1.822751,-0.376692,2.718638,
+ -0.243848,-0.96921,-0.034203,-1.719171,-0.391356,1.9758,
+ -0.204863,-0.9786,-0.019334,-1.789572,-0.391356,2.721769,
+ -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+ -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+ -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+ -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+ -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+ -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+ -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+ -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+ -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+ -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+ -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+ -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+ -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+ -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+ -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+ -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+ -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+ -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+ 0.383451,-0.836018,-0.392479,1.254219,0.1157,1.279009,
+ 0.392479,-0.836018,-0.383451,0.605375,-0.391356,1.722588,
+ 0.396914,-0.836018,-0.378858,1.16112,0.1157,1.185911,
+ 0.392479,-0.836018,-0.383451,0.605375,-0.391356,1.722588,
+ 0.383451,-0.836018,-0.392479,1.254219,0.1157,1.279009,
+ 0.378858,-0.836018,-0.396914,0.717541,-0.391356,1.834754,
+ -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+ -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+ -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+ -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+ -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+ -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+ -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+ -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+ -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+ -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+ -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+ -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+ -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+ -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+ -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+ -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+ -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+ -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+ 0.001315,-0.999904,-0.013782,0.500177,0.418917,3.617705,
+ 0.000209,-0.999904,-0.013883,0.551147,0.429969,2.822685,
+ -0.008676,-0.999834,-0.015995,1.567503,0.418917,3.581738,
+ -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+ -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+ -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+ -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+ -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+ -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+ -0.400957,0.915315,-0.037841,-1.822751,0.454676,2.718638,
+ -0.39815,0.915619,-0.055846,-1.71917,0.46934,1.9758,
+ -0.395209,0.915619,-0.073838,-1.752137,0.454676,1.970411,
+ -0.39815,0.915619,-0.055846,-1.71917,0.46934,1.9758,
+ -0.400957,0.915315,-0.037841,-1.822751,0.454676,2.718638,
+ -0.259904,0.965446,-0.019075,-1.789572,0.46934,2.721769,
+ -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+ -0.78424,0.585803,-0.204457,-1.625486,0.454676,1.429408,
+ -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+ -0.78424,0.585803,-0.204457,-1.625486,0.454676,1.429408,
+ -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+ -0.802204,0.586352,-0.112519,-1.752137,0.454676,1.970411,
+ -0.395209,0.915619,-0.073838,-1.752137,0.454676,1.970411,
+ -0.346553,0.933315,-0.093941,-1.593323,0.46934,1.438224,
+ -0.388183,0.91542,-0.106401,-1.625486,0.454676,1.429408,
+ -0.346553,0.933315,-0.093941,-1.593323,0.46934,1.438224,
+ -0.395209,0.915619,-0.073838,-1.752137,0.454676,1.970411,
+ -0.39815,0.915619,-0.055846,-1.71917,0.46934,1.9758,
+ -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+ -0.395209,-0.915619,-0.073838,-1.752137,-0.376692,1.970411,
+ -0.388183,-0.915419,-0.106401,-1.625487,-0.376692,1.429408,
+ -0.395209,-0.915619,-0.073838,-1.752137,-0.376692,1.970411,
+ -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+ -0.243848,-0.96921,-0.034203,-1.719171,-0.391356,1.9758,
+ -0.867417,-0.424499,0.259594,0.420331,-0.082341,0.724045,
+ -0.863914,-0.459936,0.205211,0.5388,-0.276944,0.801677,
+ -0.866464,-0.37452,0.330114,0.455635,-0.09635,0.818877,
+ -0.866464,-0.37452,0.330114,0.455635,-0.09635,0.818877,
+ -0.863914,-0.459936,0.205211,0.5388,-0.276944,0.801677,
+ -0.855881,-0.307094,0.416127,0.592896,-0.292953,0.956179,
+ -0.849718,-0.515316,0.111482,0.396675,-0.073374,0.659509,
+ -0.863914,-0.459936,0.205211,0.5388,-0.276944,0.801677,
+ -0.867417,-0.424499,0.259594,0.420331,-0.082341,0.724045,
+ 0.41415,-0.835984,-0.360015,0.901767,-0.028687,1.229839,
+ 0.41415,-0.835984,-0.360015,1.050087,0.1157,1.065186,
+ 0.409895,-0.836018,-0.364775,1.071328,0.1157,1.08962,
+ 0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+ 0.41415,-0.835984,-0.360015,0.901767,-0.028687,1.229839,
+ 0.409895,-0.836018,-0.364775,1.071328,0.1157,1.08962,
+ 0.001315,-0.999904,-0.013782,0.500177,0.418917,3.617705,
+ 0.003577,-0.999903,-0.013468,-0.407016,0.429972,2.665229,
+ 0.000209,-0.999904,-0.013883,0.551147,0.429969,2.822685,
+ 0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+ 0.416058,-0.835881,-0.358048,0.868735,-0.0443,1.228096,
+ 0.41415,-0.835984,-0.360015,0.901767,-0.028687,1.229839,
+ 0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+ 0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+ 0.441471,-0.737274,-0.511401,0.758404,-0.078952,1.180247,
+ 0.456862,-0.836223,-0.303327,0.106845,-0.391356,1.106955,
+ 0.467544,-0.836198,-0.286662,0.020451,-0.391356,0.973919,
+ 0.463075,-0.836184,-0.293866,0.420331,-0.082341,0.724045,
+ 0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+ 0.432927,-0.836473,-0.335988,0.293295,-0.391356,1.363581,
+ 0.428434,-0.836046,-0.342742,0.643743,-0.099518,1.08978,
+ -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.631771,0.096094,0.769175,0.847965,-0.218877,1.272403,
+ 0.432927,-0.836473,-0.335988,0.293295,-0.391356,1.363581,
+ 0.446744,-0.83622,-0.318052,0.19783,-0.391356,1.236895,
+ 0.438762,-0.836856,-0.327354,0.551399,-0.104719,0.980011,
+ 0.476257,-0.836327,-0.271544,-0.061249,-0.391356,0.837949,
+ 0.482357,-0.836304,-0.260629,0.365067,-0.017684,0.431644,
+ 0.474256,-0.836102,-0.275709,0.38175,-0.056076,0.582184,
+ 0.476257,-0.836327,-0.271544,-0.061249,-0.391356,0.837949,
+ 0.485531,-0.836253,-0.254835,-0.138153,-0.391356,0.69921,
+ 0.482357,-0.836304,-0.260629,0.365067,-0.017684,0.431644,
+ 0.001315,-0.999904,-0.013782,0.500177,0.418917,3.617705,
+ 0.003527,-0.999903,-0.013502,-0.497427,0.418917,3.460249,
+ 0.003577,-0.999903,-0.013468,-0.407016,0.429972,2.665229,
+ 0.03368,0,0.999433,1.567503,-0.391357,3.38714,
+ -0.029634,0,0.999561,0.500177,-0.351986,3.423108,
+ -0.093083,0,0.995658,0.500177,-0.391356,3.423108,
+ -0.029634,0,0.999561,0.500177,-0.351986,3.423108,
+ 0.03368,0,0.999433,1.567503,-0.391357,3.38714,
+ 0.03368,0,0.999433,1.567503,-0.351987,3.38714,
+ 0.485531,-0.836253,-0.254835,-0.138153,-0.391356,0.69921,
+ 0.49078,-0.836227,-0.244662,0.378789,0.038394,0.270618,
+ 0.482357,-0.836304,-0.260629,0.365067,-0.017684,0.431644,
+ 0.485531,-0.836253,-0.254835,-0.138153,-0.391356,0.69921,
+ 0.494701,-0.836109,-0.23705,-0.210168,-0.391356,0.557872,
+ 0.49078,-0.836227,-0.244662,0.378789,0.038394,0.270618,
+ 0.449874,-0.836148,-0.313798,0.549572,-0.104847,0.977734,
+ 0.446744,-0.83622,-0.318052,0.19783,-0.391356,1.236895,
+ 0.451622,-0.836275,-0.310937,0.477253,-0.098489,0.857111,
+ 0.446744,-0.83622,-0.318052,0.19783,-0.391356,1.236895,
+ 0.449874,-0.836148,-0.313798,0.549572,-0.104847,0.977734,
+ 0.438762,-0.836856,-0.327354,0.551399,-0.104719,0.980011,
+ 0.446744,-0.83622,-0.318052,0.19783,-0.391356,1.236895,
+ 0.456862,-0.836223,-0.303327,0.106845,-0.391356,1.106955,
+ 0.451622,-0.836275,-0.310937,0.477253,-0.098489,0.857111,
+ 0.496685,-0.836056,-0.233057,0.406831,0.08212,0.174281,
+ 0.500479,-0.836021,-0.224924,0.428578,0.1157,0.099871,
+ 0.49734,-0.835984,-0.231914,0.435364,0.1157,0.114425,
+ 0.494701,-0.836109,-0.23705,-0.210168,-0.391356,0.557872,
+ 0.501259,-0.836022,-0.223175,-0.277207,-0.391356,0.414107,
+ 0.500479,-0.836021,-0.224924,0.428578,0.1157,0.099871,
+ 0.467544,-0.836198,-0.286662,0.020451,-0.391356,0.973919,
+ 0.476257,-0.836327,-0.271544,-0.061249,-0.391356,0.837949,
+ 0.474256,-0.836102,-0.275709,0.38175,-0.056076,0.582184,
+ 0.340325,-0.836018,-0.430411,1.552194,0.1157,1.538035,
+ 0.350247,-0.836018,-0.422375,0.953272,-0.391356,2.047007,
+ 0.355139,-0.836018,-0.418271,1.449875,0.1157,1.455178,
+ 0.350247,-0.836018,-0.422375,0.953272,-0.391356,2.047007,
+ 0.340325,-0.836018,-0.430411,1.552194,0.1157,1.538035,
+ 0.334033,-0.836012,-0.435321,1.076548,-0.391356,2.146834,
+ -0.631771,0.096094,0.769175,0.847965,-0.218877,1.272403,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.631771,0.096094,0.769175,0.839604,-0.23778,1.267897,
+ -0.631771,0.096094,0.769175,0.839604,-0.23778,1.267897,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.631771,0.096094,0.769175,0.829506,-0.255335,1.261796,
+ -0.631771,0.096094,0.769175,0.829506,-0.255335,1.261796,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.631771,0.096094,0.769175,0.817839,-0.27125,1.254201,
+ -0.631771,0.096094,0.769175,0.817839,-0.27125,1.254201,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.631771,0.096094,0.769175,0.804797,-0.285259,1.245239,
+ -0.631771,0.096094,0.769175,0.804797,-0.285259,1.245239,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.631771,0.096094,0.769175,0.790598,-0.297129,1.23506,
+ -0.631771,0.096094,0.769175,0.790598,-0.297129,1.23506,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.704036,0.00442,0.71015,0.782018,-0.302539,1.228689,
+ -0.866464,-0.37452,0.330114,0.455635,-0.09635,0.818877,
+ -0.855881,-0.307094,0.416127,0.592896,-0.292953,0.956179,
+ -0.844783,-0.265761,0.464449,0.477253,-0.098489,0.857111,
+ -0.824319,-0.208014,0.526525,0.538904,-0.105527,0.964835,
+ -0.855881,-0.307094,0.416127,0.592896,-0.292953,0.956179,
+ -0.78972,-0.133178,0.598838,0.682929,-0.311817,1.108903,
+ 0.217148,-0.937956,-0.270342,1.594074,0.1157,1.569594,
+ 0.334033,-0.836012,-0.435321,1.076548,-0.391356,2.146834,
+ 0.340325,-0.836018,-0.430411,1.552194,0.1157,1.538035,
+ 0.334033,-0.836012,-0.435321,1.076548,-0.391356,2.146834,
+ 0.217148,-0.937956,-0.270342,1.594074,0.1157,1.569594,
+ 0.25896,-0.861903,-0.435962,1.620844,0.074945,1.667507,
+ 0.334033,-0.836012,-0.435321,1.076548,-0.391356,2.146834,
+ 0.25896,-0.861903,-0.435962,1.620844,0.074945,1.667507,
+ 0.318637,-0.836012,-0.446714,1.203234,-0.391356,2.242299,
+ -0.775202,-0.621236,-0.11458,0.365783,-0.037793,0.497331,
+ -0.813222,-0.581613,-0.01991,0.524328,-0.264882,0.655925,
+ -0.831264,-0.554669,0.036637,0.38175,-0.056076,0.582184,
+ 0.003527,-0.999903,-0.013502,-0.497427,0.418917,3.460249,
+ 0.006145,-0.999897,-0.012996,-1.473662,0.418917,3.101913,
+ 0.003577,-0.999903,-0.013468,-0.407016,0.429972,2.665229,
+ 0.396914,-0.836018,-0.378858,1.16112,0.1157,1.185911,
+ 0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+ 0.409895,-0.836018,-0.364775,1.071328,0.1157,1.08962,
+ 0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+ 0.396914,-0.836018,-0.378858,1.16112,0.1157,1.185911,
+ 0.392479,-0.836018,-0.383451,0.605375,-0.391356,1.722588,
+ -0.831264,-0.554669,0.036637,0.38175,-0.056076,0.582184,
+ -0.813222,-0.581613,-0.01991,0.524328,-0.264882,0.655925,
+ -0.849718,-0.515316,0.111482,0.396675,-0.073374,0.659509,
+ -0.506327,0.717294,0.478667,0.690311,-0.091124,1.126951,
+ -0.52259,0.598335,0.607367,0.755695,-0.079224,1.178282,
+ -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+ -0.234792,0.969195,0.074391,0.755695,-0.079224,1.178282,
+ -0.234792,0.969195,0.074391,0.690311,-0.091124,1.126951,
+ -0.234792,0.969195,0.074391,0.753511,-0.079688,1.177433,
+ -0.849718,-0.515316,0.111482,0.396675,-0.073374,0.659509,
+ -0.813222,-0.581613,-0.01991,0.524328,-0.264882,0.655925,
+ -0.863914,-0.459936,0.205211,0.5388,-0.276944,0.801677,
+ -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+ -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+ -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+ -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+ -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+ -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+ -0.775202,-0.621236,-0.11458,0.365783,-0.037793,0.497331,
+ -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+ -0.813222,-0.581613,-0.01991,0.524328,-0.264882,0.655925,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.78972,-0.133178,0.598838,0.682929,-0.311817,1.108903,
+ -0.764255,-0.087329,0.638974,0.724321,-0.318876,1.157447,
+ -0.093958,0,0.995576,-1.913398,-0.07239,2.710083,
+ -0.093958,0,0.995576,-1.913398,0.150374,2.710083,
+ -0.093958,0,0.995576,-1.917766,0.038992,2.709671,
+ -0.093958,0,0.995576,-1.913398,0.150374,2.710083,
+ -0.093958,0,0.995576,-1.913398,-0.07239,2.710083,
+ -0.093958,0,0.995576,-1.900591,-0.176182,2.711292,
+ -0.093958,0,0.995576,-1.913398,0.150374,2.710083,
+ -0.093958,0,0.995576,-1.900591,-0.176182,2.711292,
+ -0.093958,0,0.995576,-1.900591,0.254166,2.711292,
+ -0.093958,0,0.995576,-1.900591,0.254166,2.711292,
+ -0.093958,0,0.995576,-1.900591,-0.176182,2.711292,
+ -0.093958,0,0.995576,-1.880219,-0.26531,2.713215,
+ -0.093958,0,0.995576,-1.900591,0.254166,2.711292,
+ -0.093958,0,0.995576,-1.880219,-0.26531,2.713215,
+ -0.093958,0,0.995576,-1.880219,0.343294,2.713215,
+ -0.093958,0,0.995576,-1.880219,0.343294,2.713215,
+ -0.093958,0,0.995576,-1.880219,-0.26531,2.713215,
+ -0.093958,0,0.995576,-1.853669,-0.3337,2.71572,
+ -0.093958,0,0.995576,-1.880219,0.343294,2.713215,
+ -0.093958,0,0.995576,-1.853669,-0.3337,2.71572,
+ -0.093958,0,0.995576,-1.853669,0.411684,2.71572,
+ -0.093958,0,0.995576,-1.853669,0.411684,2.71572,
+ -0.093958,0,0.995576,-1.853669,-0.3337,2.71572,
+ -0.093958,0,0.995576,-1.822751,-0.376692,2.718638,
+ -0.093958,0,0.995576,-1.853669,0.411684,2.71572,
+ -0.093958,0,0.995576,-1.822751,-0.376692,2.718638,
+ -0.093958,0,0.995576,-1.822751,0.454676,2.718638,
+ -0.093958,0,0.995576,-1.822751,0.454676,2.718638,
+ -0.093958,0,0.995576,-1.822751,-0.376692,2.718638,
+ -0.236443,0,0.971645,-1.789572,-0.391356,2.721769,
+ -0.093958,0,0.995576,-1.822751,0.454676,2.718638,
+ -0.236443,0,0.971645,-1.789572,-0.391356,2.721769,
+ -0.307512,0,0.951544,-1.789572,-0.351986,2.721769,
+ -0.093958,0,0.995576,-1.822751,0.454676,2.718638,
+ -0.307512,0,0.951544,-1.789572,-0.351986,2.721769,
+ -0.093958,0,0.995576,-1.789572,0.418917,2.721769,
+ -0.093958,0,0.995576,-1.822751,0.454676,2.718638,
+ -0.093958,0,0.995576,-1.789572,0.418917,2.721769,
+ -0.093958,0,0.995576,-1.789572,0.46934,2.721769,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.764255,-0.087329,0.638974,0.724321,-0.318876,1.157447,
+ -0.764255,-0.087329,0.638974,0.738003,-0.319856,1.173677,
+ -0.893766,-0.44053,-0.08435,-1.853669,-0.3337,2.71572,
+ -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+ -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+ -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+ -0.893766,-0.44053,-0.08435,-1.853669,-0.3337,2.71572,
+ -0.958343,-0.27092,-0.090444,-1.880219,-0.26531,2.713215,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.764255,-0.087329,0.638974,0.738003,-0.319856,1.173677,
+ -0.764255,-0.087329,0.638974,0.751492,-0.31812,1.190048,
+ -0.958343,-0.27092,-0.090444,-1.880219,-0.26531,2.713215,
+ -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+ -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+ -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+ -0.958343,-0.27092,-0.090444,-1.880219,-0.26531,2.713215,
+ -0.983266,-0.156769,-0.092796,-1.900591,-0.176182,2.711292,
+ -0.983266,-0.156769,-0.092796,-1.900591,-0.176182,2.711292,
+ -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+ -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+ -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+ -0.983266,-0.156769,-0.092796,-1.900591,-0.176182,2.711292,
+ -0.99332,-0.067292,-0.093745,-1.913398,-0.07239,2.710083,
+ -0.807042,-0.585562,-0.076165,-1.822751,-0.376692,2.718638,
+ -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+ -0.796278,-0.586351,-0.148771,-1.752137,-0.376692,1.970411,
+ -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+ -0.807042,-0.585562,-0.076165,-1.822751,-0.376692,2.718638,
+ -0.893766,-0.44053,-0.08435,-1.853669,-0.3337,2.71572,
+ -0.397992,0.380616,0.834706,0.886816,-0.070199,1.246183,
+ -0.355285,0.355664,0.864451,0.868735,-0.0443,1.228096,
+ -0.452228,0.452832,0.768397,0.762622,-0.077692,1.181918,
+ -0.47928,0.243811,0.843117,0.865187,-0.178304,1.269373,
+ -0.490795,0.246987,0.835534,0.753511,-0.079688,1.177433,
+ -0.456234,0.272969,0.846958,0.857464,-0.198941,1.271864,
+ -0.456234,0.272969,0.846958,0.857464,-0.198941,1.271864,
+ -0.490795,0.246987,0.835534,0.753511,-0.079688,1.177433,
+ -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+ -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+ -0.507972,-0.702526,-0.498419,0.391924,0.064577,0.205552,
+ -0.507497,-0.702632,-0.498754,0.615433,-0.255562,0.429129,
+ -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+ -0.595393,-0.695809,-0.401693,0.378789,0.038394,0.270618,
+ -0.507972,-0.702526,-0.498419,0.391924,0.064577,0.205552,
+ -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+ -0.671967,-0.6777,-0.298635,0.364466,0.008825,0.342799,
+ -0.595393,-0.695809,-0.401693,0.378789,0.038394,0.270618,
+ 0.277111,-0.836018,-0.473586,1.711893,-0.247344,2.31135,
+ 0.288056,-0.836018,-0.46701,1.46621,-0.391356,2.419678,
+ 0.29347,-0.836018,-0.463626,1.681237,-0.12504,2.075563,
+ 0.288056,-0.836018,-0.46701,1.46621,-0.391356,2.419678,
+ 0.277111,-0.836018,-0.473586,1.711893,-0.247344,2.31135,
+ 0.270198,-0.836012,-0.477573,1.60218,-0.391356,2.501378,
+ 0.262608,-0.840906,-0.473195,1.72906,-0.317688,2.443393,
+ 0.270198,-0.836012,-0.477573,1.60218,-0.391356,2.501378,
+ 0.277111,-0.836018,-0.473586,1.711893,-0.247344,2.31135,
+ 0.270198,-0.836012,-0.477573,1.60218,-0.391356,2.501378,
+ 0.262608,-0.840906,-0.473195,1.72906,-0.317688,2.443393,
+ 0.285897,-0.82997,-0.478972,1.743775,-0.387364,2.572911,
+ 0.270198,-0.836012,-0.477573,1.60218,-0.391356,2.501378,
+ 0.285897,-0.82997,-0.478972,1.743775,-0.387364,2.572911,
+ 0.266041,-0.835984,-0.479951,1.740919,-0.391356,2.578282,
+ 0.29347,-0.836018,-0.463626,1.681237,-0.12504,2.075563,
+ 0.304179,-0.836018,-0.456672,1.333174,-0.391356,2.333284,
+ 0.309472,-0.836018,-0.453102,1.653081,-0.015885,1.859001,
+ 0.304179,-0.836018,-0.456672,1.333174,-0.391356,2.333284,
+ 0.29347,-0.836018,-0.463626,1.681237,-0.12504,2.075563,
+ 0.288056,-0.836018,-0.46701,1.46621,-0.391356,2.419678,
+ 0.240977,-0.859676,-0.450429,1.63484,0.05269,1.718695,
+ 0.318637,-0.836012,-0.446714,1.203234,-0.391356,2.242299,
+ 0.25896,-0.861903,-0.435962,1.620844,0.074945,1.667507,
+ 0.318637,-0.836012,-0.446714,1.203234,-0.391356,2.242299,
+ 0.240977,-0.859676,-0.450429,1.63484,0.05269,1.718695,
+ 0.309472,-0.836018,-0.453102,1.653081,-0.015885,1.859001,
+ 0.318637,-0.836012,-0.446714,1.203234,-0.391356,2.242299,
+ 0.309472,-0.836018,-0.453102,1.653081,-0.015885,1.859001,
+ 0.304179,-0.836018,-0.456672,1.333174,-0.391356,2.333284,
+ 0.998221,0,-0.059628,1.772155,-0.391357,2.822721,
+ 0.998221,0,-0.059628,1.792693,-0.351987,3.166558,
+ 0.998221,0,-0.059628,1.792693,-0.391357,3.166558,
+ 0.998221,0,-0.059628,1.792693,-0.351987,3.166558,
+ 0.998221,0,-0.059628,1.772155,-0.391357,2.822721,
+ 0.99627,0,-0.086285,1.772155,-0.351987,2.822721,
+ 0.034078,0,0.999419,1.767439,-0.351987,2.781212,
+ -0.031469,0,0.999505,0.551147,0.429969,2.822685,
+ -0.097163,0,0.995268,0.551147,-0.351987,2.822685,
+ -0.031469,0,0.999505,0.551147,0.429969,2.822685,
+ 0.034078,0,0.999419,1.767439,-0.351987,2.781212,
+ 0.034078,0,0.999419,1.767439,0.429968,2.781212,
+ 0.993609,0,-0.112881,1.767999,-0.351987,2.786146,
+ 0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+ 0.99627,0,-0.086285,1.772155,-0.351987,2.822721,
+ 0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+ 0.993609,0,-0.112881,1.767999,-0.351987,2.786146,
+ 0.993609,0,-0.112881,1.767439,-0.351987,2.781212,
+ 0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+ 0.993609,0,-0.112881,1.767439,-0.351987,2.781212,
+ 0.993609,0,-0.112881,1.767439,0.429968,2.781212,
+ 0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+ 0.993609,0,-0.112881,1.767439,0.429968,2.781212,
+ 0.993609,0,-0.112881,1.768126,0.429883,2.787255,
+ -0.987753,0,0.156023,-1.760402,0.46934,2.906435,
+ -0.987753,0,0.156023,-1.789572,0.418917,2.721769,
+ -0.987753,0,0.156023,-1.760402,0.418917,2.906435,
+ -0.987753,0,0.156023,-1.789572,0.418917,2.721769,
+ -0.987753,0,0.156023,-1.760402,0.46934,2.906435,
+ -0.987753,0,0.156023,-1.789572,0.46934,2.721769,
+ 0.141065,0.989418,0.033953,1.804276,0.469339,3.360463,
+ 0.315789,0.947008,-0.058772,1.772155,0.469339,2.822721,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+ -0.302581,0.949833,-0.079128,-1.593323,0.46934,1.438224,
+ -0.224548,0.97391,-0.032814,-1.71917,0.452349,1.9758,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ 0.326344,0.942627,-0.070391,1.744615,0.460772,2.580312,
+ 0.326686,0.943881,-0.048628,1.72906,0.455932,2.443393,
+ 0.326344,0.942627,-0.070391,1.744615,0.460772,2.580312,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ 0.315789,0.947008,-0.058772,1.772155,0.469339,2.822721,
+ 0.32092,-0.381383,-0.866924,0.854313,0.115699,0.11448,
+ 0.176399,-0.477835,-0.860556,0.987772,-0.280632,0.35003,
+ 0.101282,-0.521126,-0.847449,0.711069,0.115699,0.073242,
+ 0.176399,-0.477835,-0.860556,0.987772,-0.280632,0.35003,
+ 0.32092,-0.381383,-0.866924,0.854313,0.115699,0.11448,
+ 0.390324,-0.328222,-0.860184,1.142772,-0.29747,0.403027,
+ 0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+ 0.764255,0.087329,-0.638974,1.402704,-0.285122,0.576005,
+ 0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+ 0.764255,0.087329,-0.638974,1.402704,-0.285122,0.576005,
+ 0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+ 0.764255,0.087329,-0.638974,1.412052,-0.271114,0.589101,
+ 0.764255,0.087329,-0.638974,1.412052,-0.271114,0.589101,
+ 0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+ 0.764255,0.087329,-0.638974,1.420033,-0.2552,0.600822,
+ 0.764255,0.087329,-0.638974,1.420033,-0.2552,0.600822,
+ 0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+ 0.764255,0.087329,-0.638974,1.426514,-0.237645,0.610972,
+ 0.764255,0.087329,-0.638974,1.426514,-0.237645,0.610972,
+ 0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+ 0.764255,0.087329,-0.638974,1.431386,-0.218743,0.619383,
+ 0.764255,0.087329,-0.638974,1.431386,-0.218743,0.619383,
+ 0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+ 0.764255,0.087329,-0.638974,1.434568,-0.198808,0.625914,
+ 0.764255,0.087329,-0.638974,1.434568,-0.198808,0.625914,
+ 0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+ 0.797114,0.147609,-0.58551,1.435649,-0.183315,0.629324,
+ 0.797114,0.147609,-0.58551,1.435649,-0.183315,0.629324,
+ 0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+ 0.829874,0.221855,-0.511946,1.226889,0.115699,0.4205,
+ 0.315789,0.947008,-0.058772,1.772155,0.469339,2.822721,
+ 0.486592,0.869856,-0.08111,1.777642,0.445154,2.578459,
+ 0.326344,0.942627,-0.070391,1.744615,0.460772,2.580312,
+ 0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+ 0.591679,-0.141218,-0.793708,1.296236,-0.316855,0.491942,
+ 0.518689,-0.21565,-0.827319,0.994243,0.115699,0.189857,
+ 0.591679,-0.141218,-0.793708,1.296236,-0.316855,0.491942,
+ 0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+ 0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+ 0.591679,-0.141218,-0.793708,1.296236,-0.316855,0.491942,
+ 0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+ 0.631771,-0.096094,-0.769175,1.309184,-0.318742,0.502813,
+ 0.631771,-0.096094,-0.769175,1.309184,-0.318742,0.502813,
+ 0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+ 0.631771,-0.096094,-0.769175,1.325375,-0.319721,0.516234,
+ 0.631771,-0.096094,-0.769175,1.325375,-0.319721,0.516234,
+ 0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+ 0.631771,-0.096094,-0.769175,1.341703,-0.317985,0.529428,
+ 0.631771,-0.096094,-0.769175,1.341703,-0.317985,0.529428,
+ 0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+ 0.631771,-0.096094,-0.769175,1.357896,-0.313562,0.542176,
+ 0.631771,-0.096094,-0.769175,1.357896,-0.313562,0.542176,
+ 0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+ 0.631771,-0.096094,-0.769175,1.373684,-0.306525,0.554264,
+ 0.631771,-0.096094,-0.769175,1.373684,-0.306525,0.554264,
+ 0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+ 0.631771,-0.096094,-0.769175,1.388803,-0.296992,0.565492,
+ 0.315789,0.947008,-0.058772,1.772155,0.469339,2.822721,
+ 0.400291,0.912767,-0.081386,1.805181,0.45469,2.820868,
+ 0.486592,0.869856,-0.08111,1.777642,0.445154,2.578459,
+ 0.986902,0,0.161321,-1.71917,0.46934,1.9758,
+ 0.989006,0,0.147878,-1.71917,0.452349,1.9758,
+ 0.973675,0,0.22794,-1.593323,0.46934,1.438224,
+ 0.995576,0,0.093958,-1.789572,0.46934,2.721769,
+ 0.989006,0,0.147878,-1.71917,0.452349,1.9758,
+ 0.986902,0,0.161321,-1.71917,0.46934,1.9758,
+ 0.973675,0,0.22794,-1.593323,-0.351986,1.438224,
+ 0.982991,0,0.183655,-1.719171,-0.391356,1.9758,
+ 0.973675,0,0.22794,-1.593323,-0.391356,1.438224,
+ 0.982991,0,0.183655,-1.719171,-0.391356,1.9758,
+ 0.973675,0,0.22794,-1.593323,-0.351986,1.438224,
+ 0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+ 0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+ 0.973675,0,0.22794,-1.593323,-0.351986,1.438224,
+ 0.973675,0,0.22794,-1.593323,0.418917,1.438224,
+ 0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+ 0.973675,0,0.22794,-1.593323,0.418917,1.438224,
+ 0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+ 0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+ 0.973675,0,0.22794,-1.593323,0.418917,1.438224,
+ 0.973675,0,0.22794,-1.593323,0.46934,1.438224,
+ 0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+ 0.973675,0,0.22794,-1.593323,0.46934,1.438224,
+ 0.989006,0,0.147878,-1.71917,0.452349,1.9758,
+ 0.866467,0.373928,-0.330776,1.303752,0.115699,0.560049,
+ 0.861953,0.471316,-0.186813,1.360664,0.095657,0.717369,
+ 0.858796,0.320379,-0.399784,1.407455,-0.032839,0.663785,
+ 0.861953,0.471316,-0.186813,1.360664,0.095657,0.717369,
+ 0.866467,0.373928,-0.330776,1.303752,0.115699,0.560049,
+ 0.856683,0.49371,-0.14948,1.346671,0.115699,0.703372,
+ -0.454111,0,0.890945,-1.473662,-0.391356,2.907315,
+ -0.307512,0,0.951544,-1.789572,-0.351986,2.721769,
+ -0.236443,0,0.971645,-1.789572,-0.391356,2.721769,
+ -0.307512,0,0.951544,-1.789572,-0.351986,2.721769,
+ -0.454111,0,0.890945,-1.473662,-0.391356,2.907315,
+ -0.399962,0,0.916532,-1.473662,-0.351986,2.907315,
+ 0.655352,-0.477297,0.585407,1.426514,-0.237645,0.610972,
+ 0.68352,-0.399978,0.610588,0.847965,-0.218877,1.272403,
+ 0.639403,-0.514734,0.57115,0.839604,-0.23778,1.267897,
+ 0.68352,-0.399978,0.610588,0.847965,-0.218877,1.272403,
+ 0.655352,-0.477297,0.585407,1.426514,-0.237645,0.610972,
+ 0.695739,-0.360096,0.621513,1.431386,-0.218743,0.619383,
+ 0.695739,-0.360096,0.621513,1.431386,-0.218743,0.619383,
+ 0.706645,-0.319621,0.631265,0.84883,-0.216217,1.272781,
+ 0.68352,-0.399978,0.610588,0.847965,-0.218877,1.272403,
+ 0.706645,-0.319621,0.631265,0.84883,-0.216217,1.272781,
+ 0.695739,-0.360096,0.621513,1.431386,-0.218743,0.619383,
+ 0.720552,-0.257783,0.643702,1.434568,-0.198808,0.625914,
+ 0.706645,-0.319621,0.631265,0.84883,-0.216217,1.272781,
+ 0.720552,-0.257783,0.643702,1.434568,-0.198808,0.625914,
+ 0.720552,-0.257783,0.643702,0.857464,-0.198941,1.271864,
+ 0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+ 0.995576,0,0.093958,-1.789572,-0.391356,2.721769,
+ 0.982991,0,0.183655,-1.719171,-0.391356,1.9758,
+ 0.995576,0,0.093958,-1.789572,-0.391356,2.721769,
+ 0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+ 0.996516,0,0.083404,-1.789572,-0.351986,2.721769,
+ 0.996516,0,0.083404,-1.789572,-0.351986,2.721769,
+ 0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+ 0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+ 0.996516,0,0.083404,-1.789572,-0.351986,2.721769,
+ 0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+ 0.996177,0,0.087363,-1.789572,0.418917,2.721769,
+ 0.996177,0,0.087363,-1.789572,0.418917,2.721769,
+ 0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+ 0.989006,0,0.147878,-1.71917,0.452349,1.9758,
+ 0.996177,0,0.087363,-1.789572,0.418917,2.721769,
+ 0.989006,0,0.147878,-1.71917,0.452349,1.9758,
+ 0.995576,0,0.093958,-1.789572,0.46934,2.721769,
+ 0.093565,-0.992115,0.08339,1.341703,-0.317985,0.529428,
+ 0.029609,-0.999217,0.026249,0.738003,-0.319856,1.173677,
+ -0.00254,-0.999994,-0.002474,1.325375,-0.319721,0.516234,
+ 0.029609,-0.999217,0.026249,0.738003,-0.319856,1.173677,
+ 0.093565,-0.992115,0.08339,1.341703,-0.317985,0.529428,
+ 0.125371,-0.98579,0.111807,0.751492,-0.31812,1.190048,
+ 0.420811,-0.825651,0.375791,1.401838,-0.286095,0.574837,
+ 0.388456,-0.853684,0.346879,0.790598,-0.297129,1.23506,
+ 0.366268,-0.87114,0.327053,1.388803,-0.296992,0.565492,
+ 0.388456,-0.853684,0.346879,0.790598,-0.297129,1.23506,
+ 0.420811,-0.825651,0.375791,1.401838,-0.286095,0.574837,
+ 0.446912,-0.80061,0.399116,1.402704,-0.285122,0.576005,
+ 0.388456,-0.853684,0.346879,0.790598,-0.297129,1.23506,
+ 0.446912,-0.80061,0.399116,1.402704,-0.285122,0.576005,
+ 0.472231,-0.774036,0.421742,0.804797,-0.285259,1.245239,
+ -0.00254,-0.999994,-0.002474,1.325375,-0.319721,0.516234,
+ -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+ -0.066668,-0.995984,-0.059767,1.309184,-0.318742,0.502813,
+ -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+ -0.00254,-0.999994,-0.002474,1.325375,-0.319721,0.516234,
+ 0.029609,-0.999217,0.026249,0.738003,-0.319856,1.173677,
+ 0.279519,-0.927146,0.249538,1.373684,-0.306525,0.554264,
+ 0.219043,-0.955929,0.195501,0.764565,-0.313698,1.206288,
+ 0.18811,-0.967697,0.167863,1.357896,-0.313562,0.542176,
+ 0.219043,-0.955929,0.195501,0.764565,-0.313698,1.206288,
+ 0.279519,-0.927146,0.249538,1.373684,-0.306525,0.554264,
+ 0.316357,-0.905615,0.282454,0.777003,-0.306661,1.222126,
+ -0.125259,-0.625354,-0.770222,0.574271,0.115699,0.068952,
+ -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+ -0.307986,-0.679834,-0.66556,0.453243,0.1157,0.101903,
+ -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+ -0.125259,-0.625354,-0.770222,0.574271,0.115699,0.068952,
+ -0.049547,-0.594885,-0.802282,0.841799,-0.26749,0.336562,
+ 0.831215,0.554744,-0.036624,1.347924,0.115699,0.731818,
+ 0.861953,0.471316,-0.186813,1.360664,0.095657,0.717369,
+ 0.856683,0.49371,-0.14948,1.346671,0.115699,0.703372,
+ 0.829874,0.221855,-0.511946,1.226889,0.115699,0.4205,
+ 0.844655,0.264802,-0.465229,1.435175,-0.178174,0.631389,
+ 0.797114,0.147609,-0.58551,1.435649,-0.183315,0.629324,
+ 0.844655,0.264802,-0.465229,1.435175,-0.178174,0.631389,
+ 0.829874,0.221855,-0.511946,1.226889,0.115699,0.4205,
+ 0.858796,0.320379,-0.399784,1.407455,-0.032839,0.663785,
+ 0.858796,0.320379,-0.399784,1.407455,-0.032839,0.663785,
+ 0.829874,0.221855,-0.511946,1.226889,0.115699,0.4205,
+ 0.866467,0.373928,-0.330776,1.303752,0.115699,0.560049,
+ 0.18811,-0.967697,0.167863,1.357896,-0.313562,0.542176,
+ 0.125371,-0.98579,0.111807,0.751492,-0.31812,1.190048,
+ 0.093565,-0.992115,0.08339,1.341703,-0.317985,0.529428,
+ 0.125371,-0.98579,0.111807,0.751492,-0.31812,1.190048,
+ 0.18811,-0.967697,0.167863,1.357896,-0.313562,0.542176,
+ 0.219043,-0.955929,0.195501,0.764565,-0.313698,1.206288,
+ 0.518689,-0.21565,-0.827319,0.994243,0.115699,0.189857,
+ 0.390324,-0.328222,-0.860184,1.142772,-0.29747,0.403027,
+ 0.32092,-0.381383,-0.866924,0.854313,0.115699,0.11448,
+ 0.390324,-0.328222,-0.860184,1.142772,-0.29747,0.403027,
+ 0.518689,-0.21565,-0.827319,0.994243,0.115699,0.189857,
+ 0.591679,-0.141218,-0.793708,1.296236,-0.316855,0.491942,
+ 0.594472,-0.603866,0.530989,1.420033,-0.2552,0.600822,
+ 0.542659,-0.686007,0.484682,0.817839,-0.27125,1.254201,
+ 0.520105,-0.716734,0.464525,1.412052,-0.271114,0.589101,
+ 0.542659,-0.686007,0.484682,0.817839,-0.27125,1.254201,
+ 0.594472,-0.603866,0.530989,1.420033,-0.2552,0.600822,
+ 0.594472,-0.603866,0.530989,0.829506,-0.255335,1.261796,
+ -0.397992,0.380616,0.834706,0.886816,-0.070199,1.246183,
+ -0.499279,0.460824,0.733731,0.758404,-0.078952,1.180247,
+ -0.47928,0.243811,0.843117,0.865187,-0.178304,1.269373,
+ 0.743937,-0.06942,0.664634,1.435175,-0.178174,0.631389,
+ 0.745715,-0.006279,0.666235,0.886816,-0.070199,1.246183,
+ 0.737507,-0.148222,0.658873,0.865187,-0.178304,1.269373,
+ 0.745715,-0.006279,0.666235,0.886816,-0.070199,1.246183,
+ 0.743937,-0.06942,0.664634,1.435175,-0.178174,0.631389,
+ 0.745715,-0.006279,0.666235,1.407455,-0.032839,0.663785,
+ 0.745715,-0.006279,0.666235,0.886816,-0.070199,1.246183,
+ 0.745715,-0.006279,0.666235,1.407455,-0.032839,0.663785,
+ 0.745715,-0.006279,0.666235,0.901767,-0.028687,1.229839,
+ 0.745715,-0.006279,0.666235,0.901767,-0.028687,1.229839,
+ 0.745715,-0.006279,0.666235,1.407455,-0.032839,0.663785,
+ 0.745715,-0.006279,0.666235,1.360664,0.095657,0.717369,
+ 0.745715,-0.006279,0.666235,0.901767,-0.028687,1.229839,
+ 0.745715,-0.006279,0.666235,1.360664,0.095657,0.717369,
+ 0.745715,-0.006279,0.666235,1.050087,0.1157,1.065186,
+ 0.745715,-0.006279,0.666235,1.050087,0.1157,1.065186,
+ 0.745715,-0.006279,0.666235,1.360664,0.095657,0.717369,
+ 0.745715,-0.006279,0.666235,1.347924,0.115699,0.731818,
+ 0,1,0,-1.789572,-0.351986,2.721769,
+ 0,1,0,-1.343835,-0.351986,2.308269,
+ 0,1,0,-1.753229,-0.351986,2.185036,
+ 0,1,0,-1.343835,-0.351986,2.308269,
+ 0,1,0,-1.789572,-0.351986,2.721769,
+ 0,1,0,-1.473662,-0.351986,2.907315,
+ 0.432927,-0.836473,-0.335988,0.293295,-0.391356,1.363581,
+ 0.433809,-0.83702,-0.333476,0.555173,-0.104583,0.984454,
+ 0.435934,-0.836023,-0.333207,0.640686,-0.100103,1.087313,
+ -0.082643,-0.993825,-0.074039,0.987772,-0.280632,0.35003,
+ -0.082643,-0.993825,-0.074039,0.714801,-0.258939,0.363541,
+ -0.082643,-0.993825,-0.074039,0.841799,-0.26749,0.336562,
+ -0.082643,-0.993825,-0.074039,0.714801,-0.258939,0.363541,
+ -0.082643,-0.993825,-0.074039,0.987772,-0.280632,0.35003,
+ -0.082643,-0.993825,-0.074039,1.142772,-0.29747,0.403027,
+ -0.082643,-0.993825,-0.074039,0.714801,-0.258939,0.363541,
+ -0.082643,-0.993825,-0.074039,1.142772,-0.29747,0.403027,
+ -0.082643,-0.993825,-0.074039,0.615433,-0.255562,0.429129,
+ -0.082643,-0.993825,-0.074039,0.615433,-0.255562,0.429129,
+ -0.082643,-0.993825,-0.074039,1.142772,-0.29747,0.403027,
+ -0.082643,-0.993825,-0.074039,1.296236,-0.316855,0.491942,
+ -0.082643,-0.993825,-0.074039,0.615433,-0.255562,0.429129,
+ -0.082643,-0.993825,-0.074039,1.296236,-0.316855,0.491942,
+ -0.082643,-0.993825,-0.074039,0.550466,-0.257589,0.528855,
+ -0.082643,-0.993825,-0.074039,0.550466,-0.257589,0.528855,
+ -0.082643,-0.993825,-0.074039,1.296236,-0.316855,0.491942,
+ -0.066668,-0.995984,-0.059767,1.309184,-0.318742,0.502813,
+ -0.082643,-0.993825,-0.074039,0.550466,-0.257589,0.528855,
+ -0.066668,-0.995984,-0.059767,1.309184,-0.318742,0.502813,
+ -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+ -0.082643,-0.993825,-0.074039,0.550466,-0.257589,0.528855,
+ -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+ -0.082643,-0.993825,-0.074039,0.524328,-0.264882,0.655925,
+ -0.082643,-0.993825,-0.074039,0.524328,-0.264882,0.655925,
+ -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+ -0.082643,-0.993825,-0.074039,0.5388,-0.276944,0.801677,
+ -0.082643,-0.993825,-0.074039,0.5388,-0.276944,0.801677,
+ -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+ -0.082643,-0.993825,-0.074039,0.592896,-0.292953,0.956179,
+ -0.082643,-0.993825,-0.074039,0.592896,-0.292953,0.956179,
+ -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+ -0.082643,-0.993825,-0.074039,0.682929,-0.311817,1.108903,
+ 0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+ 0.981604,-0.156227,-0.109762,1.882448,-0.17612,2.816533,
+ 0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+ 0.981604,-0.156227,-0.109762,1.882448,-0.17612,2.816533,
+ 0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+ 0.99148,-0.06721,-0.111576,1.895235,-0.072325,2.815815,
+ -0.249605,0.431242,0.867022,0.901767,-0.028687,1.229839,
+ -0.355285,0.355664,0.864451,0.868735,-0.0443,1.228096,
+ -0.397992,0.380616,0.834706,0.886816,-0.070199,1.246183,
+ 0.520105,-0.716734,0.464525,1.412052,-0.271114,0.589101,
+ 0.472231,-0.774036,0.421742,0.804797,-0.285259,1.245239,
+ 0.446912,-0.80061,0.399116,1.402704,-0.285122,0.576005,
+ 0.472231,-0.774036,0.421742,0.804797,-0.285259,1.245239,
+ 0.520105,-0.716734,0.464525,1.412052,-0.271114,0.589101,
+ 0.542659,-0.686007,0.484682,0.817839,-0.27125,1.254201,
+ 0.275598,-0.853624,-0.442009,1.667565,0.059804,1.716859,
+ 0.25896,-0.861903,-0.435962,1.620844,0.074945,1.667507,
+ 0.117527,-0.982232,-0.146317,1.594074,0.1157,1.569594,
+ 0.720552,-0.257783,0.643702,1.434568,-0.198808,0.625914,
+ 0.737507,-0.148222,0.658873,0.865187,-0.178304,1.269373,
+ 0.720552,-0.257783,0.643702,0.857464,-0.198941,1.271864,
+ 0.737507,-0.148222,0.658873,0.865187,-0.178304,1.269373,
+ 0.720552,-0.257783,0.643702,1.434568,-0.198808,0.625914,
+ 0.731453,-0.194869,0.653454,1.435649,-0.183315,0.629324,
+ 0.737507,-0.148222,0.658873,0.865187,-0.178304,1.269373,
+ 0.731453,-0.194869,0.653454,1.435649,-0.183315,0.629324,
+ 0.743937,-0.06942,0.664634,1.435175,-0.178174,0.631389,
+ -0.493712,0,0.869625,-1.473662,0.418917,3.101913,
+ -0.563285,0,0.826263,-1.760402,0.46934,2.906435,
+ -0.563285,0,0.826263,-1.760402,0.418917,2.906435,
+ -0.563285,0,0.826263,-1.760402,0.46934,2.906435,
+ -0.493712,0,0.869625,-1.473662,0.418917,3.101913,
+ -0.420316,0,0.907378,-1.473662,0.46934,3.101913,
+ 0.101282,-0.521126,-0.847449,0.711069,0.115699,0.073242,
+ -0.049547,-0.594885,-0.802282,0.841799,-0.26749,0.336562,
+ -0.125259,-0.625354,-0.770222,0.574271,0.115699,0.068952,
+ -0.049547,-0.594885,-0.802282,0.841799,-0.26749,0.336562,
+ 0.101282,-0.521126,-0.847449,0.711069,0.115699,0.073242,
+ 0.176399,-0.477835,-0.860556,0.987772,-0.280632,0.35003,
+ 0.594472,-0.603866,0.530989,1.420033,-0.2552,0.600822,
+ 0.639403,-0.514734,0.57115,0.839604,-0.23778,1.267897,
+ 0.594472,-0.603866,0.530989,0.829506,-0.255335,1.261796,
+ 0.639403,-0.514734,0.57115,0.839604,-0.23778,1.267897,
+ 0.594472,-0.603866,0.530989,1.420033,-0.2552,0.600822,
+ 0.655352,-0.477297,0.585407,1.426514,-0.237645,0.610972,
+ -0.311023,0,0.950402,-1.343835,-0.351986,2.308269,
+ -0.288237,0,0.957559,-1.753229,0.429973,2.185036,
+ -0.288237,0,0.957559,-1.753229,-0.351986,2.185036,
+ -0.288237,0,0.957559,-1.753229,0.429973,2.185036,
+ -0.311023,0,0.950402,-1.343835,-0.351986,2.308269,
+ -0.333644,0,0.942699,-1.343835,0.429973,2.308269,
+ 0.366268,-0.87114,0.327053,1.388803,-0.296992,0.565492,
+ 0.316357,-0.905615,0.282454,0.777003,-0.306661,1.222126,
+ 0.279519,-0.927146,0.249538,1.373684,-0.306525,0.554264,
+ 0.316357,-0.905615,0.282454,0.777003,-0.306661,1.222126,
+ 0.366268,-0.87114,0.327053,1.388803,-0.296992,0.565492,
+ 0.388456,-0.853684,0.346879,0.790598,-0.297129,1.23506,
+ 0.316357,-0.905615,0.282454,0.777003,-0.306661,1.222126,
+ 0.388456,-0.853684,0.346879,0.790598,-0.297129,1.23506,
+ 0.337978,-0.891461,0.301774,0.782018,-0.302539,1.228689,
+ 0.426503,-0.836005,-0.345241,0.665608,-0.095567,1.107224,
+ 0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+ 0.426432,-0.836018,-0.345296,0.645497,-0.099189,1.091151,
+ 0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+ 0.426503,-0.836005,-0.345241,0.665608,-0.095567,1.107224,
+ 0.426318,-0.836032,-0.345403,0.673898,-0.094074,1.113849,
+ 0.405161,-0.913099,-0.045758,1.80488,-0.376661,2.820885,
+ 0.252879,-0.950479,-0.180671,1.744615,-0.391346,2.580312,
+ 0.379015,-0.886977,-0.263854,1.777341,-0.376815,2.578476,
+ 0.252879,-0.950479,-0.180671,1.744615,-0.391346,2.580312,
+ 0.405161,-0.913099,-0.045758,1.80488,-0.376661,2.820885,
+ 0.207733,-0.9779,-0.023645,1.772155,-0.391357,2.822721,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ 0.240571,0.970213,-0.028486,1.63484,0.469339,1.718695,
+ 0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+ -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+ -0.504226,0.552291,0.663876,0.755695,-0.079224,1.178282,
+ -0.479798,0.509116,0.714559,0.758404,-0.078952,1.180247,
+ -0.765433,-0.076157,0.638994,0.546029,-0.105148,0.973456,
+ -0.824319,-0.208014,0.526525,0.538904,-0.105527,0.964835,
+ -0.78972,-0.133178,0.598838,0.682929,-0.311817,1.108903,
+ 0.467544,-0.836198,-0.286662,0.020451,-0.391356,0.973919,
+ 0.470214,-0.836003,-0.28284,0.396675,-0.073374,0.659509,
+ 0.463075,-0.836184,-0.293866,0.420331,-0.082341,0.724045,
+ 0.494701,-0.836109,-0.23705,-0.210168,-0.391356,0.557872,
+ 0.500479,-0.836021,-0.224924,0.428578,0.1157,0.099871,
+ 0.496685,-0.836056,-0.233057,0.406831,0.08212,0.174281,
+ 0.494701,-0.836109,-0.23705,-0.210168,-0.391356,0.557872,
+ 0.496685,-0.836056,-0.233057,0.406831,0.08212,0.174281,
+ 0.49078,-0.836227,-0.244662,0.378789,0.038394,0.270618,
+ 0.430585,-0.755425,-0.493893,0.762622,-0.077692,1.181918,
+ 0.441471,-0.737274,-0.511401,0.758404,-0.078952,1.180247,
+ 0.496169,-0.607991,-0.619809,0.758981,-0.077961,1.179865,
+ 0.432927,-0.836473,-0.335988,0.293295,-0.391356,1.363581,
+ 0.435934,-0.836023,-0.333207,0.640686,-0.100103,1.087313,
+ 0.428434,-0.836046,-0.342742,0.643743,-0.099518,1.08978,
+ 0.456862,-0.836223,-0.303327,0.106845,-0.391356,1.106955,
+ 0.463075,-0.836184,-0.293866,0.420331,-0.082341,0.724045,
+ 0.459265,-0.836065,-0.300117,0.455635,-0.09635,0.818877,
+ 0.240977,-0.859676,-0.450429,1.63484,0.05269,1.718695,
+ 0.25896,-0.861903,-0.435962,1.620844,0.074945,1.667507,
+ 0.275598,-0.853624,-0.442009,1.667565,0.059804,1.716859,
+ 0.367836,-0.89319,-0.258668,0.690311,-0.091124,1.126951,
+ 0.324389,-0.893916,-0.309333,0.755695,-0.079224,1.178282,
+ 0.341562,-0.894102,-0.289684,0.753511,-0.079688,1.177433,
+ 0.444321,-0.74498,-0.497578,0.755695,-0.079224,1.178282,
+ 0.455024,-0.799852,-0.391394,0.690311,-0.091124,1.126951,
+ 0.496169,-0.607991,-0.619809,0.758981,-0.077961,1.179865,
+ 0.444321,-0.74498,-0.497578,0.755695,-0.079224,1.178282,
+ 0.496169,-0.607991,-0.619809,0.758981,-0.077961,1.179865,
+ 0.441471,-0.737274,-0.511401,0.758404,-0.078952,1.180247,
+ 0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+ 0.806377,-0.584412,-0.090654,1.80488,-0.376661,2.820885,
+ 0.782324,-0.576239,-0.23647,1.777341,-0.376815,2.578476,
+ 0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+ 0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+ 0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+ 0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+ 0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+ 0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+ 0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+ 0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+ 0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+ 0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+ 0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+ 0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+ 0.956965,-0.269823,-0.106838,1.862133,-0.265255,2.817672,
+ 0.892998,-0.438832,-0.099907,1.835677,-0.333656,2.819157,
+ 0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+ 0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+ 0.892998,-0.438832,-0.099907,1.835677,-0.333656,2.819157,
+ 0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+ 0.941461,0.31575,-0.118125,1.862354,0.343336,2.81766,
+ 0.974976,0.189186,-0.116748,1.882604,0.254219,2.816524,
+ 0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+ 0.850682,0.512682,-0.116178,1.835947,0.411713,2.819142,
+ 0.941461,0.31575,-0.118125,1.862354,0.343336,2.81766,
+ 0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+ 0.805615,0.58129,-0.114393,1.805181,0.45469,2.820868,
+ 0.850682,0.512682,-0.116178,1.835947,0.411713,2.819142,
+ 0.797689,0.594217,-0.102947,1.777642,0.445154,2.578459,
+ 0.981604,-0.156227,-0.109762,1.882448,-0.17612,2.816533,
+ 0.956965,-0.269823,-0.106838,1.862133,-0.265255,2.817672,
+ 0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+ 0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+ 0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+ 0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+ 0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+ 0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+ 0.807977,-0.486376,-0.332584,1.792582,-0.265825,2.439829,
+ 0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+ 0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+ 0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+ 0.797689,0.594217,-0.102947,1.777642,0.445154,2.578459,
+ 0.850682,0.512682,-0.116178,1.835947,0.411713,2.819142,
+ 0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+ 0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+ 0.941461,0.31575,-0.118125,1.862354,0.343336,2.81766,
+ 0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+ 0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+ 0.956965,-0.269823,-0.106838,1.862133,-0.265255,2.817672,
+ 0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+ 0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+ 0.974976,0.189186,-0.116748,1.882604,0.254219,2.816524,
+ 0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+ 0.892998,-0.438832,-0.099907,1.835677,-0.333656,2.819157,
+ 0.806377,-0.584412,-0.090654,1.80488,-0.376661,2.820885,
+ 0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+ 0.467544,-0.836198,-0.286662,0.020451,-0.391356,0.973919,
+ 0.474256,-0.836102,-0.275709,0.38175,-0.056076,0.582184,
+ 0.470214,-0.836003,-0.28284,0.396675,-0.073374,0.659509,
+ 0.456862,-0.836223,-0.303327,0.106845,-0.391356,1.106955,
+ 0.459265,-0.836065,-0.300117,0.455635,-0.09635,0.818877,
+ 0.451622,-0.836275,-0.310937,0.477253,-0.098489,0.857111,
+ 0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+ 0.428434,-0.836046,-0.342742,0.643743,-0.099518,1.08978,
+ 0.426432,-0.836018,-0.345296,0.645497,-0.099189,1.091151,
+ 0.432927,-0.836473,-0.335988,0.293295,-0.391356,1.363581,
+ 0.438762,-0.836856,-0.327354,0.551399,-0.104719,0.980011,
+ 0.433809,-0.83702,-0.333476,0.555173,-0.104583,0.984454,
+ 0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+ 0.426318,-0.836032,-0.345403,0.673898,-0.094074,1.113849,
+ 0.406635,-0.856746,-0.31723,0.690311,-0.091124,1.126951,
+ 0.797689,0.594217,-0.102947,1.777642,0.445154,2.578459,
+ 0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+ 0.844008,0.528559,-0.090974,1.792852,0.404136,2.439814,
+ 0.37929,0.924605,-0.035288,1.762087,0.442766,2.44154,
+ 0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+ 0.240571,0.970213,-0.028486,1.63484,0.469339,1.718695,
+ 0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+ 0.946878,0.205961,-0.246986,1.717236,0.338631,1.562684,
+ 0.904661,0.346941,-0.247428,1.271248,0.380955,-0.021329,
+ 0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+ 0.938723,-0.205797,-0.276489,1.717155,0.246972,1.562689,
+ 0.952752,-0.156236,-0.260487,1.284116,0.24723,-0.021329,
+ 0.724259,-0.575555,-0.379718,1.761786,-0.304479,2.441557,
+ 0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+ 0.782324,-0.576239,-0.23647,1.777341,-0.376815,2.578476,
+ 0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+ 0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+ 0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+ 0.851194,0.50661,-0.137165,1.725039,0.408343,1.713635,
+ 0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+ 0.94538,0.296534,-0.135365,1.745289,0.365203,1.712498,
+ 0.240571,0.970213,-0.028486,1.63484,0.469339,1.718695,
+ 0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+ 0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+ 0.262608,-0.840906,-0.473195,1.72906,-0.317688,2.443393,
+ 0.240977,-0.859676,-0.450429,1.63484,0.05269,1.718695,
+ 0.275598,-0.853624,-0.442009,1.667565,0.059804,1.716859,
+ 0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+ 0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+ 0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+ 0.653549,0.750745,-0.096206,1.777642,0.445154,2.578459,
+ 0.844008,0.528559,-0.090974,1.792852,0.404136,2.439814,
+ 0.711557,0.698766,-0.073569,1.762087,0.442766,2.44154,
+ 0.36952,-0.836018,-0.405622,1.350509,0.1157,1.368801,
+ 0.378858,-0.836018,-0.396914,0.717541,-0.391356,1.834754,
+ 0.383451,-0.836018,-0.392479,1.254219,0.1157,1.279009,
+ 0.378858,-0.836018,-0.396914,0.717541,-0.391356,1.834754,
+ 0.36952,-0.836018,-0.405622,1.350509,0.1157,1.368801,
+ 0.364775,-0.836018,-0.409895,0.833554,-0.391356,1.942938,
+ 0.982391,-0.009206,-0.186608,1.762309,0.261046,1.711543,
+ 0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+ 0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+ 0.869834,0.47479,-0.13403,1.725039,0.408343,1.713635,
+ 0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+ 0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+ 0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+ 0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+ 0.613857,0.771354,-0.167905,1.223803,0.445458,-0.021329,
+ 0.938723,-0.205797,-0.276489,1.717155,0.246972,1.562689,
+ 0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+ 0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+ 0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+ 0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+ 0.807151,-0.547554,-0.220661,1.250463,0.167512,-0.021329,
+ 0.326686,0.943881,-0.048628,1.72906,0.455932,2.443393,
+ 0.37929,0.924605,-0.035288,1.762087,0.442766,2.44154,
+ 0.240571,0.970213,-0.028486,1.63484,0.469339,1.718695,
+ 0.608966,-0.724087,-0.323817,1.657596,0.139442,1.56603,
+ 0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+ 0.570937,-0.702812,-0.424365,1.698362,0.080622,1.715131,
+ 0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+ 0.94538,0.296534,-0.135365,1.745289,0.365203,1.712498,
+ 0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+ 0.352435,-0.903593,-0.243536,1.6268,0.121747,1.567758,
+ 0.605395,-0.778525,-0.165517,1.223677,0.139521,-0.021329,
+ 0.608966,-0.724087,-0.323817,1.657596,0.139442,1.56603,
+ 0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+ 0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+ 0.946878,0.205961,-0.246986,1.717236,0.338631,1.562684,
+ 0.773313,0.602828,-0.196431,1.684274,0.418004,1.564533,
+ 0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+ 0.80696,0.547786,-0.220785,1.250799,0.417372,-0.021329,
+ 0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+ 0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+ 0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+ 0.946878,0.205961,-0.246986,1.717236,0.338631,1.562684,
+ 0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+ 0.952938,0.154945,-0.260578,1.284174,0.338115,-0.021329,
+ 0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+ 0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+ 0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+ 0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+ 0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+ 0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+ 0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+ 0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+ 0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+ 0.946878,0.205961,-0.246986,1.717236,0.338631,1.562684,
+ 0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+ 0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+ 0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+ 0.739369,0.666111,-0.098133,1.698631,0.441443,1.715116,
+ 0.851194,0.50661,-0.137165,1.725039,0.408343,1.713635,
+ 0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+ 0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+ 0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+ 0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+ 0.982391,-0.009206,-0.186608,1.762309,0.261046,1.711543,
+ 0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+ 0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+ 0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+ 0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+ 0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+ 0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+ 0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+ -0.266041,0.835984,0.479951,1.744615,-0.391346,2.580312,
+ -0.266041,0.835984,0.479951,1.743775,-0.387364,2.572911,
+ -0.266041,0.835984,0.479951,1.740919,-0.391356,2.578282,
+ 0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+ 0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+ 0.938723,-0.205797,-0.276489,1.717155,0.246972,1.562689,
+ 0.527931,0.84762,-0.05318,1.762087,0.442766,2.44154,
+ 0.694799,0.712655,-0.096836,1.698631,0.441443,1.715116,
+ 0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+ 0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+ 0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+ 0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+ 0.372426,-0.888996,-0.266431,1.744615,-0.391346,2.580312,
+ 0.459522,-0.764252,-0.452503,1.761786,-0.304479,2.441557,
+ 0.379015,-0.886977,-0.263854,1.777341,-0.376815,2.578476,
+ 0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+ 0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+ 0.982391,-0.009206,-0.186608,1.762309,0.261046,1.711543,
+ 0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+ 0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+ 0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+ 0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+ 0.982391,-0.009206,-0.186608,1.762309,0.261046,1.711543,
+ 0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+ 0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+ 0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+ 0.608966,-0.724087,-0.323817,1.657596,0.139442,1.56603,
+ 0.403179,0.91206,-0.074795,1.777642,0.445154,2.578459,
+ 0.37929,0.924605,-0.035288,1.762087,0.442766,2.44154,
+ 0.326686,0.943881,-0.048628,1.72906,0.455932,2.443393,
+ 0.013852,-0.999834,-0.0118,-1.789572,0.418917,2.721769,
+ 0.006074,-0.999778,-0.020183,-1.753229,0.429973,2.185036,
+ 0.01031,-0.999871,-0.012311,-1.343835,0.429973,2.308269,
+ 0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+ 0.773313,0.602828,-0.196431,1.684274,0.418004,1.564533,
+ 0.613857,0.771354,-0.167905,1.223803,0.445458,-0.021329,
+ 0.94538,0.296534,-0.135365,1.745289,0.365203,1.712498,
+ 0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+ 0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+ 0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+ 0.998221,0,-0.059628,1.804276,0.469339,3.360463,
+ 0.998221,0,-0.059628,1.804276,0.418917,3.360463,
+ 0.998221,0,-0.059628,1.804276,0.469339,3.360463,
+ 0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+ 0.998221,0,-0.059628,1.772155,0.469339,2.822721,
+ 0.326344,0.942627,-0.070391,1.744615,0.460772,2.580312,
+ 0.486592,0.869856,-0.08111,1.777642,0.445154,2.578459,
+ 0.326686,0.943881,-0.048628,1.72906,0.455932,2.443393,
+ 0.117527,-0.982232,-0.146317,1.594074,0.1157,1.569594,
+ 0.259122,-0.963243,-0.070844,1.192294,0.121731,-0.021329,
+ 0.30254,-0.939741,-0.159236,1.6268,0.121747,1.567758,
+ 0,1,0,1.567503,-0.351987,3.38714,
+ 0,1,0,1.772155,-0.351987,2.822721,
+ 0,1,0,1.767999,-0.351987,2.786146,
+ 0,1,0,1.772155,-0.351987,2.822721,
+ 0,1,0,1.567503,-0.351987,3.38714,
+ 0,1,0,1.792693,-0.351987,3.166558,
+ 0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+ 0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+ 0.807977,-0.486376,-0.332584,1.792582,-0.265825,2.439829,
+ 0.815608,0.569675,-0.10126,1.698631,0.441443,1.715116,
+ 0.844008,0.528559,-0.090974,1.792852,0.404136,2.439814,
+ 0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+ 0.807977,-0.486376,-0.332584,1.792582,-0.265825,2.439829,
+ 0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+ 0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+ -0.045349,0.979938,0.194076,-0.497427,0.46934,3.460249,
+ -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+ -0.093562,0.988956,0.114946,-1.473662,0.46934,3.101913,
+ -0.108877,0,0.994055,0.500177,0.418917,3.617705,
+ -0.219726,0,0.975562,-0.497427,0.46934,3.460249,
+ -0.282885,0,0.959154,-0.497427,0.418917,3.460249,
+ -0.219726,0,0.975562,-0.497427,0.46934,3.460249,
+ -0.108877,0,0.994055,0.500177,0.418917,3.617705,
+ -0.155904,0,0.987772,0.001375,0.46934,3.538977,
+ -0.155904,0,0.987772,0.001375,0.46934,3.538977,
+ -0.108877,0,0.994055,0.500177,0.418917,3.617705,
+ -0.029634,0,0.999561,0.500177,0.469339,3.617705,
+ -0.030971,0.98007,0.196225,0.001375,0.46934,3.538977,
+ -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+ -0.045349,0.979938,0.194076,-0.497427,0.46934,3.460249,
+ 0.68279,0,0.730615,1.804276,0.418917,3.360463,
+ 0.68279,0,0.730615,1.567503,0.469339,3.581738,
+ 0.68279,0,0.730615,1.567503,0.418917,3.581738,
+ 0.68279,0,0.730615,1.567503,0.469339,3.581738,
+ 0.68279,0,0.730615,1.804276,0.418917,3.360463,
+ 0.68279,0,0.730615,1.804276,0.469339,3.360463,
+ -0.106238,0.992765,0.055963,-1.760402,0.46934,2.906435,
+ -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+ -0.259904,0.965446,-0.019075,-1.789572,0.46934,2.721769,
+ -0.019925,0.980232,0.196846,0.500177,0.469339,3.617705,
+ 0.067043,0.991144,0.114624,1.567503,0.469339,3.581738,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ -0.282885,0,0.959154,-0.497427,-0.391356,3.265652,
+ -0.399962,0,0.916532,-1.473662,-0.351986,2.907315,
+ -0.454111,0,0.890945,-1.473662,-0.391356,2.907315,
+ -0.399962,0,0.916532,-1.473662,-0.351986,2.907315,
+ -0.282885,0,0.959154,-0.497427,-0.391356,3.265652,
+ -0.219726,0,0.975562,-0.497427,-0.351986,3.265652,
+ -0.097163,0,0.995268,0.551147,-0.351987,2.822685,
+ -0.227815,0,0.973704,-0.407016,0.429972,2.665229,
+ -0.292742,0,0.956192,-0.407017,-0.351986,2.665229,
+ -0.227815,0,0.973704,-0.407016,0.429972,2.665229,
+ -0.097163,0,0.995268,0.551147,-0.351987,2.822685,
+ -0.031469,0,0.999505,0.551147,0.429969,2.822685,
+ 0.770964,-0.531938,-0.350222,1.792582,-0.265825,2.439829,
+ 0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+ 0.580091,-0.694621,-0.425438,1.761786,-0.304479,2.441557,
+ 0.015086,-0.999854,-0.007974,-1.760402,0.418917,2.906435,
+ 0.013852,-0.999834,-0.0118,-1.789572,0.418917,2.721769,
+ 0.01031,-0.999871,-0.012311,-1.343835,0.429973,2.308269,
+ -0.259904,0.965446,-0.019075,-1.789572,0.46934,2.721769,
+ -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+ -0.224548,0.97391,-0.032814,-1.71917,0.452349,1.9758,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ 0.326686,0.943881,-0.048628,1.72906,0.455932,2.443393,
+ 0.240571,0.970213,-0.028486,1.63484,0.469339,1.718695,
+ -0.093562,0.988956,0.114946,-1.473662,0.46934,3.101913,
+ -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+ -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+ -0.019925,0.980232,0.196846,0.500177,0.469339,3.617705,
+ -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+ -0.030971,0.98007,0.196225,0.001375,0.46934,3.538977,
+ 0.006145,-0.999897,-0.012996,-1.473662,0.418917,3.101913,
+ 0.015086,-0.999854,-0.007974,-1.760402,0.418917,2.906435,
+ 0.01031,-0.999871,-0.012311,-1.343835,0.429973,2.308269,
+ 0,1,0,-1.473662,-0.351986,2.907315,
+ 0,1,0,-0.407017,-0.351986,2.665229,
+ 0,1,0,-1.343835,-0.351986,2.308269,
+ 0,1,0,-0.407017,-0.351986,2.665229,
+ 0,1,0,-1.473662,-0.351986,2.907315,
+ 0,1,0,-0.497427,-0.351986,3.265652,
+ -0.045349,0.979938,0.194076,-0.497427,0.46934,3.460249,
+ -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+ -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+ -0.844783,-0.265761,0.464449,0.477253,-0.098489,0.857111,
+ -0.855881,-0.307094,0.416127,0.592896,-0.292953,0.956179,
+ -0.824319,-0.208014,0.526525,0.538904,-0.105527,0.964835,
+ 0,1,0,-0.497427,-0.351986,3.265652,
+ 0,1,0,0.551147,-0.351987,2.822685,
+ 0,1,0,-0.407017,-0.351986,2.665229,
+ 0,1,0,0.551147,-0.351987,2.822685,
+ 0,1,0,-0.497427,-0.351986,3.265652,
+ 0,1,0,0.500177,-0.351986,3.423108,
+ 0.000845,1,-0.00005,1.772155,-0.391357,2.822721,
+ 0.000845,1,-0.00005,1.769671,-0.391357,2.781136,
+ 0.000845,1,-0.00005,1.744615,-0.391346,2.580312,
+ 0.982391,-0.009206,-0.186608,1.762309,0.261046,1.711543,
+ 0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+ 0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+ 0.067043,0.991144,0.114624,1.567503,0.469339,3.581738,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ 0.69976,0,0.714378,1.792693,-0.391357,3.166558,
+ 0.69976,0,0.714378,1.567503,-0.351987,3.38714,
+ 0.69976,0,0.714378,1.567503,-0.391357,3.38714,
+ 0.69976,0,0.714378,1.567503,-0.351987,3.38714,
+ 0.69976,0,0.714378,1.792693,-0.391357,3.166558,
+ 0.69976,0,0.714378,1.792693,-0.351987,3.166558,
+ -0.019925,0.980232,0.196846,0.500177,0.469339,3.617705,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+ 0.997715,0,0.067557,-1.753229,0.429973,2.185036,
+ 0.996516,0,0.083404,-1.789572,-0.351986,2.721769,
+ 0.997715,0,0.067557,-1.753229,-0.351986,2.185036,
+ 0.996516,0,0.083404,-1.789572,-0.351986,2.721769,
+ 0.997715,0,0.067557,-1.753229,0.429973,2.185036,
+ 0.996177,0,0.087363,-1.789572,0.418917,2.721769,
+ -0.093562,0.988956,0.114946,-1.473662,0.46934,3.101913,
+ -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+ -0.106238,0.992765,0.055963,-1.760402,0.46934,2.906435,
+ 0.401352,-0.790567,-0.462515,1.761786,-0.304479,2.441557,
+ 0.285897,-0.82997,-0.478972,1.743775,-0.387364,2.572911,
+ 0.262608,-0.840906,-0.473195,1.72906,-0.317688,2.443393,
+ 0.285897,-0.82997,-0.478972,1.743775,-0.387364,2.572911,
+ 0.401352,-0.790567,-0.462515,1.761786,-0.304479,2.441557,
+ 0.372426,-0.888996,-0.266431,1.744615,-0.391346,2.580312,
+ 0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+ 0.608966,-0.724087,-0.323817,1.657596,0.139442,1.56603,
+ 0.605395,-0.778525,-0.165517,1.223677,0.139521,-0.021329,
+ -0.01688,-0.999694,-0.018062,1.772155,0.429175,2.822721,
+ -0.008676,-0.999834,-0.015995,1.567503,0.418917,3.581738,
+ -0.005944,-0.999865,-0.015303,1.768126,0.429883,2.787255,
+ -0.008676,-0.999834,-0.015995,1.567503,0.418917,3.581738,
+ -0.01688,-0.999694,-0.018062,1.772155,0.429175,2.822721,
+ -0.01688,-0.999694,-0.018062,1.804276,0.418917,3.360463,
+ 0.067043,0.991144,0.114624,1.567503,0.469339,3.581738,
+ 0.141065,0.989418,0.033953,1.804276,0.469339,3.360463,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ 0.570937,-0.702812,-0.424365,1.698362,0.080622,1.715131,
+ 0.415876,-0.852051,-0.317895,1.6268,0.121747,1.567758,
+ 0.608966,-0.724087,-0.323817,1.657596,0.139442,1.56603,
+ -0.282885,0,0.959154,-0.497427,0.418917,3.460249,
+ -0.420316,0,0.907378,-1.473662,0.46934,3.101913,
+ -0.493712,0,0.869625,-1.473662,0.418917,3.101913,
+ -0.420316,0,0.907378,-1.473662,0.46934,3.101913,
+ -0.282885,0,0.959154,-0.497427,0.418917,3.460249,
+ -0.219726,0,0.975562,-0.497427,0.46934,3.460249,
+ 0.94538,0.296534,-0.135365,1.745289,0.365203,1.712498,
+ 0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+ 0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+ 0.773313,0.602828,-0.196431,1.684274,0.418004,1.564533,
+ 0.851194,0.50661,-0.137165,1.725039,0.408343,1.713635,
+ 0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+ -0.292742,0,0.956192,-0.407017,-0.351986,2.665229,
+ -0.333644,0,0.942699,-1.343835,0.429973,2.308269,
+ -0.311023,0,0.950402,-1.343835,-0.351986,2.308269,
+ -0.333644,0,0.942699,-1.343835,0.429973,2.308269,
+ -0.292742,0,0.956192,-0.407017,-0.351986,2.665229,
+ -0.227815,0,0.973704,-0.407016,0.429972,2.665229,
+ 0.844008,0.528559,-0.090974,1.792852,0.404136,2.439814,
+ 0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+ 0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+ 0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+ 0.694799,0.712655,-0.096836,1.698631,0.441443,1.715116,
+ 0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+ -0.093083,0,0.995658,0.500177,-0.391356,3.423108,
+ -0.219726,0,0.975562,-0.497427,-0.351986,3.265652,
+ -0.282885,0,0.959154,-0.497427,-0.391356,3.265652,
+ -0.219726,0,0.975562,-0.497427,-0.351986,3.265652,
+ -0.093083,0,0.995658,0.500177,-0.391356,3.423108,
+ -0.029634,0,0.999561,0.500177,-0.351986,3.423108,
+ 0.739369,0.666111,-0.098133,1.698631,0.441443,1.715116,
+ 0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+ 0.851194,0.50661,-0.137165,1.725039,0.408343,1.713635,
+ 0.352435,-0.903593,-0.243536,1.6268,0.121747,1.567758,
+ 0.259122,-0.963243,-0.070844,1.192294,0.121731,-0.021329,
+ 0.605395,-0.778525,-0.165517,1.223677,0.139521,-0.021329,
+ 0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+ 0.988875,0.094445,-0.114917,1.895316,0.150435,2.815811,
+ 0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+ 0.988875,0.094445,-0.114917,1.895316,0.150435,2.815811,
+ 0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+ 0.974976,0.189186,-0.116748,1.882604,0.254219,2.816524,
+ 0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+ 0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+ 0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+ 0.275598,-0.853624,-0.442009,1.667565,0.059804,1.716859,
+ 0.117527,-0.982232,-0.146317,1.594074,0.1157,1.569594,
+ 0.352435,-0.903593,-0.243536,1.6268,0.121747,1.567758,
+ 0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+ 0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+ 0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+ 0.262608,-0.840906,-0.473195,1.72906,-0.317688,2.443393,
+ 0.335823,-0.832009,-0.441569,1.667565,0.059804,1.716859,
+ 0.459522,-0.764252,-0.452503,1.761786,-0.304479,2.441557,
+ 0.056017,0,0.99843,1.80488,-0.376661,2.820885,
+ 0.056017,0,0.99843,1.772155,-0.351987,2.822721,
+ 0.056017,0,0.99843,1.772155,-0.391357,2.822721,
+ 0.056017,0,0.99843,1.772155,-0.351987,2.822721,
+ 0.056017,0,0.99843,1.80488,-0.376661,2.820885,
+ 0.056017,0,0.99843,1.772155,0.429175,2.822721,
+ 0.056017,0,0.99843,1.772155,0.429175,2.822721,
+ 0.056017,0,0.99843,1.80488,-0.376661,2.820885,
+ 0.056017,0,0.99843,1.772155,0.469339,2.822721,
+ 0.056017,0,0.99843,1.772155,0.469339,2.822721,
+ 0.056017,0,0.99843,1.80488,-0.376661,2.820885,
+ 0.056017,0,0.99843,1.805181,0.45469,2.820868,
+ 0.056017,0,0.99843,1.805181,0.45469,2.820868,
+ 0.056017,0,0.99843,1.80488,-0.376661,2.820885,
+ 0.056017,0,0.99843,1.835677,-0.333656,2.819157,
+ 0.056017,0,0.99843,1.805181,0.45469,2.820868,
+ 0.056017,0,0.99843,1.835677,-0.333656,2.819157,
+ 0.056017,0,0.99843,1.835947,0.411713,2.819142,
+ 0.056017,0,0.99843,1.835947,0.411713,2.819142,
+ 0.056017,0,0.99843,1.835677,-0.333656,2.819157,
+ 0.056017,0,0.99843,1.862133,-0.265255,2.817672,
+ 0.056017,0,0.99843,1.835947,0.411713,2.819142,
+ 0.056017,0,0.99843,1.862133,-0.265255,2.817672,
+ 0.056017,0,0.99843,1.862354,0.343336,2.81766,
+ 0.056017,0,0.99843,1.862354,0.343336,2.81766,
+ 0.056017,0,0.99843,1.862133,-0.265255,2.817672,
+ 0.056017,0,0.99843,1.882448,-0.17612,2.816533,
+ 0.056017,0,0.99843,1.862354,0.343336,2.81766,
+ 0.056017,0,0.99843,1.882448,-0.17612,2.816533,
+ 0.056017,0,0.99843,1.882604,0.254219,2.816524,
+ 0.056017,0,0.99843,1.882604,0.254219,2.816524,
+ 0.056017,0,0.99843,1.882448,-0.17612,2.816533,
+ 0.056017,0,0.99843,1.895235,-0.072325,2.815815,
+ 0.056017,0,0.99843,1.882604,0.254219,2.816524,
+ 0.056017,0,0.99843,1.895235,-0.072325,2.815815,
+ 0.056017,0,0.99843,1.895316,0.150435,2.815811,
+ 0.056017,0,0.99843,1.895316,0.150435,2.815811,
+ 0.056017,0,0.99843,1.895235,-0.072325,2.815815,
+ 0.056017,0,0.99843,1.899624,0.039057,2.815569,
+ 0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+ 0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+ 0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+ 0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+ 0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+ 0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+ 0.851194,0.50661,-0.137165,1.725039,0.408343,1.713635,
+ 0.94538,0.296534,-0.135365,1.745289,0.365203,1.712498,
+ 0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+ 0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+ 0.770964,-0.531938,-0.350222,1.792582,-0.265825,2.439829,
+ 0.570937,-0.702812,-0.424365,1.698362,0.080622,1.715131,
+ 0.335823,-0.832009,-0.441569,1.667565,0.059804,1.716859,
+ 0.415876,-0.852051,-0.317895,1.6268,0.121747,1.567758,
+ 0.570937,-0.702812,-0.424365,1.698362,0.080622,1.715131,
+ 0.664025,-0.635453,-0.394044,1.792582,-0.265825,2.439829,
+ 0.335823,-0.832009,-0.441569,1.667565,0.059804,1.716859,
+ 0.570937,-0.702812,-0.424365,1.698362,0.080622,1.715131,
+ 0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+ 0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+ 0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+ 0.938723,-0.205797,-0.276489,1.717155,0.246972,1.562689,
+ 0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+ 0.904449,-0.347599,-0.24728,1.27116,0.204368,-0.021329,
+ 0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+ 0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+ 0.288332,0.954261,-0.079066,1.192338,0.463307,-0.021329,
+ 0.711557,0.698766,-0.073569,1.762087,0.442766,2.44154,
+ 0.844008,0.528559,-0.090974,1.792852,0.404136,2.439814,
+ 0.739369,0.666111,-0.098133,1.698631,0.441443,1.715116,
+ 0.506757,-0.743743,-0.43594,1.667565,0.059804,1.716859,
+ 0.770964,-0.531938,-0.350222,1.792582,-0.265825,2.439829,
+ 0.505027,-0.739497,-0.445076,1.761786,-0.304479,2.441557,
+ 0.952938,0.154945,-0.260578,1.284174,0.338115,-0.021329,
+ 0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+ 0.964597,-0.000855,-0.263728,1.288529,0.292549,-0.021329,
+ 0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+ 0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+ 0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+ 0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+ 0.825346,0.546533,-0.14179,1.725039,0.408343,1.713635,
+ 0.773313,0.602828,-0.196431,1.684274,0.418004,1.564533,
+ -0.998221,0,0.059628,1.772155,0.429175,2.822721,
+ -0.998221,0,0.059628,1.769671,-0.351987,2.781136,
+ -0.998221,0,0.059628,1.772155,-0.351987,2.822721,
+ -0.998221,0,0.059628,1.769671,-0.351987,2.781136,
+ -0.998221,0,0.059628,1.772155,0.429175,2.822721,
+ -0.998221,0,0.059628,1.769671,0.429968,2.781136,
+ 0,-1,0,-1.473662,-0.391356,2.907315,
+ -0.204863,-0.9786,-0.019334,-1.789572,-0.391356,2.721769,
+ -0.243848,-0.96921,-0.034203,-1.719171,-0.391356,1.9758,
+ 0,-1,0,-1.473662,-0.391356,2.907315,
+ -0.243848,-0.96921,-0.034203,-1.719171,-0.391356,1.9758,
+ -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+ -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+ -0.00444,-0.99999,0.000116,-0.583012,-0.391356,-0.021329,
+ -0.004277,-0.999991,0.000118,-0.578202,-0.391399,-0.021329,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,-0.445302,-0.391356,-0.021329,
+ 0,-1,0,-0.396035,-0.391356,0.119998,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,-0.339188,-0.391356,0.268089,
+ 0,-1,0,-0.277207,-0.391356,0.414107,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,-0.277207,-0.391356,0.414107,
+ 0,-1,0,-0.210168,-0.391356,0.557872,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,-0.210168,-0.391356,0.557872,
+ 0,-1,0,-0.138153,-0.391356,0.69921,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,-0.138153,-0.391356,0.69921,
+ 0,-1,0,-0.061249,-0.391356,0.837949,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,-0.061249,-0.391356,0.837949,
+ 0,-1,0,0.020451,-0.391356,0.973919,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,0.020451,-0.391356,0.973919,
+ 0,-1,0,0.106845,-0.391356,1.106955,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,0.106845,-0.391356,1.106955,
+ 0,-1,0,0.19783,-0.391356,1.236895,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,0.19783,-0.391356,1.236895,
+ 0,-1,0,0.293295,-0.391356,1.363581,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,0.293295,-0.391356,1.363581,
+ 0,-1,0,0.393122,-0.391356,1.486857,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,0.393122,-0.391356,1.486857,
+ 0,-1,0,0.497191,-0.391356,1.606575,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,0.497191,-0.391356,1.606575,
+ 0,-1,0,0.605375,-0.391356,1.722588,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,0.605375,-0.391356,1.722588,
+ 0,-1,0,1.567503,-0.391357,3.38714,
+ 0,-1,0,1.567503,-0.391357,3.38714,
+ 0,-1,0,0.605375,-0.391356,1.722588,
+ 0,-1,0,0.717541,-0.391356,1.834754,
+ 0,-1,0,1.567503,-0.391357,3.38714,
+ 0,-1,0,0.717541,-0.391356,1.834754,
+ 0,-1,0,0.833554,-0.391356,1.942938,
+ 0,-1,0,1.567503,-0.391357,3.38714,
+ 0,-1,0,0.833554,-0.391356,1.942938,
+ 0,-1,0,0.953272,-0.391356,2.047007,
+ 0,-1,0,1.567503,-0.391357,3.38714,
+ 0,-1,0,0.953272,-0.391356,2.047007,
+ 0,-1,0,1.076548,-0.391356,2.146834,
+ 0,-1,0,1.567503,-0.391357,3.38714,
+ 0,-1,0,1.076548,-0.391356,2.146834,
+ 0,-1,0,1.203234,-0.391356,2.242299,
+ 0,-1,0,1.567503,-0.391357,3.38714,
+ 0,-1,0,1.203234,-0.391356,2.242299,
+ 0,-1,0,1.333174,-0.391356,2.333284,
+ 0,-1,0,1.567503,-0.391357,3.38714,
+ 0,-1,0,1.333174,-0.391356,2.333284,
+ 0,-1,0,1.46621,-0.391356,2.419678,
+ 0,-1,0,1.567503,-0.391357,3.38714,
+ 0,-1,0,1.46621,-0.391356,2.419678,
+ 0,-1,0,1.60218,-0.391356,2.501378,
+ 0,-1,0,1.567503,-0.391357,3.38714,
+ 0,-1,0,1.60218,-0.391356,2.501378,
+ 0.000552,-1,-0.000055,1.792693,-0.391357,3.166558,
+ 0.000552,-1,-0.000055,1.792693,-0.391357,3.166558,
+ 0,-1,0,1.60218,-0.391356,2.501378,
+ 0.001527,-0.999999,-0.000135,1.740919,-0.391356,2.578282,
+ 0.000552,-1,-0.000055,1.792693,-0.391357,3.166558,
+ 0.001527,-0.999999,-0.000135,1.740919,-0.391356,2.578282,
+ 0.20767,-0.977918,-0.023446,1.744615,-0.391346,2.580312,
+ 0.000552,-1,-0.000055,1.792693,-0.391357,3.166558,
+ 0.20767,-0.977918,-0.023446,1.744615,-0.391346,2.580312,
+ 0.207733,-0.9779,-0.023645,1.772155,-0.391357,2.822721,
+ 0.613857,0.771354,-0.167905,1.223803,0.445458,-0.021329,
+ 0.773313,0.602828,-0.196431,1.684274,0.418004,1.564533,
+ 0.80696,0.547786,-0.220785,1.250799,0.417372,-0.021329,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ 0,0.997162,-0.07528,0.377018,0.469993,-0.021329,
+ 0.009051,0.997085,-0.075758,0.303932,0.469993,-0.021329,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ 0.008038,0.997118,-0.075439,0.391707,0.469993,-0.021329,
+ 0,0.997162,-0.07528,0.377018,0.469993,-0.021329,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ 0.006337,0.997132,-0.075415,0.394344,0.469951,-0.021329,
+ 0.008038,0.997118,-0.075439,0.391707,0.469993,-0.021329,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ -0.001701,0.997163,-0.075255,0.406812,0.469993,-0.021329,
+ 0.006337,0.997132,-0.075415,0.394344,0.469951,-0.021329,
+ 0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+ 0.605395,-0.778525,-0.165517,1.223677,0.139521,-0.021329,
+ 0.807151,-0.547554,-0.220661,1.250463,0.167512,-0.021329,
+ 0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+ 0.505346,0.851806,-0.138025,1.219931,0.447894,-0.021329,
+ 0.288332,0.954261,-0.079066,1.192338,0.463307,-0.021329,
+ 0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+ 0.613857,0.771354,-0.167905,1.223803,0.445458,-0.021329,
+ 0.505346,0.851806,-0.138025,1.219931,0.447894,-0.021329,
+ -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+ -0.001297,0.996986,-0.077575,0.029236,0.470013,-0.021329,
+ -0.001223,0.996985,-0.077584,0.012875,0.469971,-0.021329,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ -0.000418,0.999281,-0.037914,1.086592,0.46967,-0.021329,
+ -0.000735,0.999282,-0.03789,1.085566,0.469669,-0.021329,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ 0.083141,0.995658,-0.041878,1.157159,0.469626,-0.021329,
+ -0.000418,0.999281,-0.037914,1.086592,0.46967,-0.021329,
+ 0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+ 0.184736,0.981481,-0.050663,1.188641,0.464041,-0.021329,
+ 0.168416,0.984624,-0.046387,1.159104,0.4693,-0.021329,
+ 0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+ 0.288332,0.954261,-0.079066,1.192338,0.463307,-0.021329,
+ 0.184736,0.981481,-0.050663,1.188641,0.464041,-0.021329,
+ 0.904661,0.346941,-0.247428,1.271248,0.380955,-0.021329,
+ 0.946878,0.205961,-0.246986,1.717236,0.338631,1.562684,
+ 0.952938,0.154945,-0.260578,1.284174,0.338115,-0.021329,
+ -0.346553,0.933315,-0.093941,-1.593323,0.46934,1.438224,
+ -0.512223,0.844277,-0.157556,-1.168401,0.454762,-0.021329,
+ -0.388183,0.91542,-0.106401,-1.625486,0.454676,1.429408,
+ -0.436436,0.891263,-0.123179,-1.593323,0.46934,1.438224,
+ -0.505009,0.849029,-0.155293,-1.166885,0.456027,-0.021329,
+ -0.654864,0.727594,-0.204353,-1.168401,0.454762,-0.021329,
+ -0.346553,0.933315,-0.093941,-1.593323,0.46934,1.438224,
+ -0.271068,0.958765,-0.085395,-1.133667,0.469297,-0.021329,
+ -0.505009,0.849029,-0.155293,-1.166885,0.456027,-0.021329,
+ 0.952752,-0.156236,-0.260487,1.284116,0.24723,-0.021329,
+ 0.938723,-0.205797,-0.276489,1.717155,0.246972,1.562689,
+ 0.904449,-0.347599,-0.24728,1.27116,0.204368,-0.021329,
+ 0.904449,-0.347599,-0.24728,1.27116,0.204368,-0.021329,
+ 0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+ 0.807151,-0.547554,-0.220661,1.250463,0.167512,-0.021329,
+ 0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+ 0.952752,-0.156236,-0.260487,1.284116,0.24723,-0.021329,
+ 0.964597,-0.000855,-0.263728,1.288529,0.292549,-0.021329,
+ 0.80696,0.547786,-0.220785,1.250799,0.417372,-0.021329,
+ 0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+ 0.904661,0.346941,-0.247428,1.271248,0.380955,-0.021329,
+ -0.788436,-0.590729,-0.171486,0.365496,-0.027628,0.463635,
+ -0.671967,-0.6777,-0.298635,0.364466,0.008825,0.342799,
+ -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+ -0.084698,0.953745,0.28844,0.364466,0.008825,0.342799,
+ -0.084698,0.953745,0.28844,0.365496,-0.027628,0.463635,
+ -0.084698,0.953745,0.28844,0.364821,-0.003737,0.384439,
+ -0.874399,-0.46654,-0.133289,0.364821,-0.003737,0.384439,
+ -0.788436,-0.590729,-0.171486,0.365496,-0.027628,0.463635,
+ -0.874399,-0.46654,-0.133289,0.365067,-0.017684,0.431644,
+ -0.788436,-0.590729,-0.171486,0.365496,-0.027628,0.463635,
+ -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+ -0.775202,-0.621236,-0.11458,0.365783,-0.037793,0.497331,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.765433,-0.076157,0.638994,0.546029,-0.105148,0.973456,
+ -0.78972,-0.133178,0.598838,0.682929,-0.311817,1.108903,
+ -0.765433,-0.076157,0.638994,0.546029,-0.105148,0.973456,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.765796,-0.063678,0.639923,0.555173,-0.104583,0.984454,
+ -0.765433,-0.076157,0.638994,0.546029,-0.105148,0.973456,
+ -0.765796,-0.063678,0.639923,0.555173,-0.104583,0.984454,
+ -0.759557,-0.12673,0.637976,0.549572,-0.104847,0.977734,
+ -0.438608,-0.806129,0.397215,0.549572,-0.104847,0.977734,
+ -0.438608,-0.806129,0.397215,0.555173,-0.104583,0.984454,
+ -0.438608,-0.806129,0.397215,0.551399,-0.104719,0.980011,
+ -0.397992,0.380616,0.834706,0.886816,-0.070199,1.246183,
+ -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+ -0.499279,0.460824,0.733731,0.758404,-0.078952,1.180247,
+ -0.084938,-0.957458,0.275791,0.758981,-0.077961,1.179865,
+ -0.084938,-0.957458,0.275791,0.886816,-0.070199,1.246183,
+ -0.084938,-0.957458,0.275791,0.762622,-0.077692,1.181918,
+ -0.47928,0.243811,0.843117,0.865187,-0.178304,1.269373,
+ -0.525635,0.427293,0.735615,0.755695,-0.079224,1.178282,
+ -0.490795,0.246987,0.835534,0.753511,-0.079688,1.177433,
+ -0.502999,0.214001,0.837374,0.755695,-0.079224,1.178282,
+ -0.47928,0.243811,0.843117,0.865187,-0.178304,1.269373,
+ -0.479672,0.399525,0.781213,0.758404,-0.078952,1.180247,
+ 0.411104,-0.808356,-0.421371,0.755695,-0.079224,1.178282,
+ 0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+ 0.341562,-0.894102,-0.289684,0.753511,-0.079688,1.177433,
+ 0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+ 0.411104,-0.808356,-0.421371,0.755695,-0.079224,1.178282,
+ 0.441471,-0.737274,-0.511401,0.758404,-0.078952,1.180247,
+ 0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+ 0.406635,-0.856746,-0.31723,0.690311,-0.091124,1.126951,
+ 0.341562,-0.894102,-0.289684,0.753511,-0.079688,1.177433,
+ 0.430585,-0.755425,-0.493893,0.762622,-0.077692,1.181918,
+ 0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+ 0.441471,-0.737274,-0.511401,0.758404,-0.078952,1.180247,
+ 0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+ 0.430585,-0.755425,-0.493893,0.762622,-0.077692,1.181918,
+ 0.416058,-0.835881,-0.358048,0.868735,-0.0443,1.228096,
+ -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+ -0.388183,-0.915419,-0.106401,-1.625487,-0.376692,1.429408,
+ -0.209954,-0.97514,-0.070863,-1.168402,-0.376779,-0.021329,
+ -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+ -0.209954,-0.97514,-0.070863,-1.168402,-0.376779,-0.021329,
+ -0.217197,-0.973383,-0.073152,-1.166885,-0.376822,-0.021329,
+ -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+ -0.217197,-0.973383,-0.073152,-1.166885,-0.376822,-0.021329,
+ -0.135336,-0.989883,-0.042621,-1.133667,-0.391356,-0.021329,
+ 0.000001,-1,0.000294,0.435364,0.1157,0.114425,
+ -0.000315,-1,0.00014,0.428578,0.1157,0.099871,
+ -0.000086,-1,0.00026,0.50133,0.11566,-0.021329,
+ 0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+ 0.000064,-1,0.000388,0.512455,0.115661,-0.021329,
+ 0.000029,-1,0.000412,0.517242,0.115661,-0.021329,
+ 0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+ -0.000033,-1,0.000445,0.525941,0.115661,-0.021329,
+ -0.000014,-1,0.000438,0.53006,0.115661,-0.021329,
+ -0.000001,-1,0,1.303752,0.115699,0.560049,
+ 0,-1,0,1.226889,0.115699,0.4205,
+ 0,-1,0,1.158086,0.115699,-0.021329,
+ 0,-1,0,1.346671,0.115699,0.703372,
+ -0.000001,-1,0,1.303752,0.115699,0.560049,
+ 0,-1,0,1.158086,0.115699,-0.021329,
+ 0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+ 0,-1,0,1.347924,0.115699,0.731818,
+ 0,-1,0,1.346671,0.115699,0.703372,
+ 0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+ 0,-1,0,1.350509,0.1157,1.368801,
+ 0,-1,0,1.347924,0.115699,0.731818,
+ 0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+ 0,-1,0,1.449875,0.1157,1.455178,
+ 0,-1,0,1.350509,0.1157,1.368801,
+ 0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+ 0,-1,0,1.552194,0.1157,1.538035,
+ 0,-1,0,1.449875,0.1157,1.455178,
+ 0,-1,0,1.071328,0.1157,1.08962,
+ 0,-1,0,1.050087,0.1157,1.065186,
+ 0,-1,0,1.347924,0.115699,0.731818,
+ 0,-1,0,1.16112,0.1157,1.185911,
+ 0,-1,0,1.071328,0.1157,1.08962,
+ 0,-1,0,1.347924,0.115699,0.731818,
+ 0,-1,0,1.254219,0.1157,1.279009,
+ 0,-1,0,1.16112,0.1157,1.185911,
+ 0,-1,0,1.347924,0.115699,0.731818,
+ 0,-1,0,1.350509,0.1157,1.368801,
+ 0,-1,0,1.254219,0.1157,1.279009,
+ 0,-1,0,1.347924,0.115699,0.731818,
+ -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+ -0.630309,0.099649,0.769923,0.643743,-0.099518,1.08978,
+ -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+ -0.630309,0.099649,0.769923,0.643743,-0.099518,1.08978,
+ -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+ -0.628473,0.104347,0.7708,0.645497,-0.099189,1.091151,
+ -0.628473,0.104347,0.7708,0.645497,-0.099189,1.091151,
+ -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+ -0.631922,0.095714,0.769099,0.665608,-0.095567,1.107224,
+ -0.631922,0.095714,0.769099,0.665608,-0.095567,1.107224,
+ -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+ -0.631713,0.096164,0.769215,0.673898,-0.094074,1.113849,
+ -0.631713,0.096164,0.769215,0.673898,-0.094074,1.113849,
+ -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+ -0.631638,0.096354,0.769253,0.690311,-0.091124,1.126951,
+ -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+ -0.490795,0.246987,0.835534,0.753511,-0.079688,1.177433,
+ -0.631638,0.096354,0.769253,0.690311,-0.091124,1.126951,
+ -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+ -0.942413,0.153754,-0.297013,-1.250661,0.25354,-0.021329,
+ -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+ -0.942413,0.153754,-0.297013,-1.250661,0.25354,-0.021329,
+ -0.946173,0.125627,-0.298284,-1.258407,0.189508,-0.021329,
+ -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+ -0.946173,0.125627,-0.298284,-1.258407,0.189508,-0.021329,
+ -0.951352,0.071862,-0.299608,-1.264066,0.150374,-0.021329,
+ -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+ 0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+ -0.000014,-1,0.000438,0.53006,0.115661,-0.021329,
+ 0.000022,-1,0.000133,1.105769,0.115699,-0.021329,
+ -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+ 0.006788,0.997025,-0.076781,0.302467,0.470013,-0.021329,
+ -0.001297,0.996986,-0.077575,0.029236,0.470013,-0.021329,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ 0.058512,0.995903,-0.06894,0.726874,0.469993,-0.021329,
+ -0.001701,0.997163,-0.075255,0.406812,0.469993,-0.021329,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ -0.000735,0.999282,-0.03789,1.085566,0.469669,-0.021329,
+ 0.078004,0.995473,-0.05431,0.72963,0.469668,-0.021329,
+ -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+ 0,-1,0,-1.129276,-0.391356,-0.021329,
+ -0.00444,-0.99999,0.000116,-0.583012,-0.391356,-0.021329,
+ -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+ 0,0.996796,-0.07999,-0.403368,0.470034,-0.021329,
+ -0.063557,0.995303,-0.073018,-0.701067,0.470034,-0.021329,
+ 0.514271,-0.836016,-0.19132,-0.396035,-0.391356,0.119998,
+ 0.51815,-0.835999,-0.18063,-0.445302,-0.391356,-0.021329,
+ 0.515247,-0.836022,-0.18865,-0.007741,-0.120157,-0.021329,
+ -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+ -0.001223,0.996985,-0.077584,0.012875,0.469971,-0.021329,
+ 0.009468,0.996863,-0.078582,-0.272122,0.470013,-0.021329,
+ -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+ 0.007064,0.996807,-0.079537,-0.273618,0.470034,-0.021329,
+ 0,0.996796,-0.07999,-0.403368,0.470034,-0.021329,
+ -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+ -0.004277,-0.999991,0.000118,-0.578202,-0.391399,-0.021329,
+ 0.000109,-1,0.000002,-0.447809,-0.391356,-0.021329,
+ -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+ -0.047726,0.997181,-0.057905,-0.704134,0.46974,-0.021329,
+ -0.114051,0.992145,-0.051394,-1.131355,0.469698,-0.021329,
+ 0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+ 0.000029,-1,0.000412,0.517242,0.115661,-0.021329,
+ -0.000033,-1,0.000445,0.525941,0.115661,-0.021329,
+ 0.117527,-0.982232,-0.146317,1.594074,0.1157,1.569594,
+ 0.089681,-0.995669,-0.024519,1.159105,0.115699,-0.021329,
+ 0.259122,-0.963243,-0.070844,1.192294,0.121731,-0.021329,
+ -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+ -0.504226,0.552291,0.663876,0.755695,-0.079224,1.178282,
+ -0.479798,0.509116,0.714559,0.758404,-0.078952,1.180247,
+ -0.479798,0.509116,0.714559,0.758404,-0.078952,1.180247,
+ -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+ -0.504226,0.552291,0.663876,0.755695,-0.079224,1.178282,
+ -0.452228,0.452832,0.768397,0.762622,-0.077692,1.181918,
+ -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+ -0.499279,0.460824,0.733731,0.758404,-0.078952,1.180247,
+ -0.452228,0.452832,0.768397,0.762622,-0.077692,1.181918,
+ -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+ -0.499279,0.460824,0.733731,0.758404,-0.078952,1.180247,
+ 0,0,-1,-1.264066,0.150374,-0.021329,
+ 0,0,-1,-1.264066,-0.07239,-0.021329,
+ 0,0,-1,-1.268666,0.038992,-0.021329,
+ 0,0,-1,-1.264066,-0.07239,-0.021329,
+ 0,0,-1,-1.264066,0.150374,-0.021329,
+ 0,0,-1,-1.25058,-0.176182,-0.021329,
+ 0,0,-1,-1.25058,-0.176182,-0.021329,
+ 0,0,-1,-1.264066,0.150374,-0.021329,
+ 0,0,-1,-1.258407,0.189508,-0.021329,
+ 0,0,-1,-1.25058,-0.176182,-0.021329,
+ 0,0,-1,-1.258407,0.189508,-0.021329,
+ 0,0,-1,-1.250661,0.25354,-0.021329,
+ 0,0,-1,-1.25058,-0.176182,-0.021329,
+ 0,0,-1,-1.250661,0.25354,-0.021329,
+ 0,0,-1,-1.229126,0.343294,-0.021329,
+ 0,0,-1,-1.25058,-0.176182,-0.021329,
+ 0,0,-1,-1.229126,0.343294,-0.021329,
+ 0,0,-1,-1.229126,-0.26531,-0.021329,
+ 0,0,-1,-1.229126,-0.26531,-0.021329,
+ 0,0,-1,-1.229126,0.343294,-0.021329,
+ 0,0,-1,-1.201167,-0.333701,-0.021329,
+ 0,0,-1,-1.201167,-0.333701,-0.021329,
+ 0,0,-1,-1.229126,0.343294,-0.021329,
+ 0,0,-1,-1.201167,0.411684,-0.021329,
+ 0,0,-1,-1.201167,-0.333701,-0.021329,
+ 0,0,-1,-1.201167,0.411684,-0.021329,
+ 0,0,-1,-1.168402,-0.376779,-0.021329,
+ 0,0,-1,-1.168402,-0.376779,-0.021329,
+ 0,0,-1,-1.201167,0.411684,-0.021329,
+ 0,0,-1,-1.168401,0.454762,-0.021329,
+ 0,0,-1,-1.168402,-0.376779,-0.021329,
+ 0,0,-1,-1.168401,0.454762,-0.021329,
+ 0,0,-1,-1.166885,-0.376822,-0.021329,
+ 0,0,-1,-1.166885,-0.376822,-0.021329,
+ 0,0,-1,-1.168401,0.454762,-0.021329,
+ 0,0,-1,-1.166885,0.456027,-0.021329,
+ 0,0,-1,-1.166885,-0.376822,-0.021329,
+ 0,0,-1,-1.166885,0.456027,-0.021329,
+ 0,0,-1,-1.133667,-0.391356,-0.021329,
+ 0,0,-1,-1.133667,-0.391356,-0.021329,
+ 0,0,-1,-1.166885,0.456027,-0.021329,
+ 0,0,-1,-1.133667,0.469297,-0.021329,
+ 0,0,-1,-1.133667,-0.391356,-0.021329,
+ 0,0,-1,-1.133667,0.469297,-0.021329,
+ 0,0,-1,-1.131951,-0.391356,-0.021329,
+ 0,0,-1,-1.131951,-0.391356,-0.021329,
+ 0,0,-1,-1.133667,0.469297,-0.021329,
+ 0,0,-1,-1.131355,0.469698,-0.021329,
+ 0,0,-1,-1.131951,-0.391356,-0.021329,
+ 0,0,-1,-1.131355,0.469698,-0.021329,
+ 0,0,-1,-1.129276,-0.391356,-0.021329,
+ 0,0,-1,-1.129276,-0.391356,-0.021329,
+ 0,0,-1,-1.131355,0.469698,-0.021329,
+ 0,0,-1,-0.704134,0.46974,-0.021329,
+ 0,0,-1,-1.129276,-0.391356,-0.021329,
+ 0,0,-1,-0.704134,0.46974,-0.021329,
+ 0,0,-1,-0.583012,-0.391356,-0.021329,
+ 0,0,-1,-0.583012,-0.391356,-0.021329,
+ 0,0,-1,-0.704134,0.46974,-0.021329,
+ 0,0,-1,-0.701067,0.470034,-0.021329,
+ 0,0,-1,-0.583012,-0.391356,-0.021329,
+ 0,0,-1,-0.701067,0.470034,-0.021329,
+ 0,0,-1,-0.403368,0.470034,-0.021329,
+ 0,0,-1,-0.583012,-0.391356,-0.021329,
+ 0,0,-1,-0.403368,0.470034,-0.021329,
+ 0,0,-1,-0.578202,-0.391399,-0.021329,
+ 0,0,-1,-0.578202,-0.391399,-0.021329,
+ 0,0,-1,-0.403368,0.470034,-0.021329,
+ 0,0,-1,-0.447809,-0.391356,-0.021329,
+ 0,0,-1,-0.447809,-0.391356,-0.021329,
+ 0,0,-1,-0.403368,0.470034,-0.021329,
+ 0,0,-1,-0.445302,-0.391356,-0.021329,
+ 0,0,-1,-0.445302,-0.391356,-0.021329,
+ 0,0,-1,-0.403368,0.470034,-0.021329,
+ 0.000003,0,-1,-0.007741,-0.120157,-0.021329,
+ 0.000003,0,-1,-0.007741,-0.120157,-0.021329,
+ 0,0,-1,-0.403368,0.470034,-0.021329,
+ 0,0,-1,-0.273618,0.470034,-0.021329,
+ 0.000003,0,-1,-0.007741,-0.120157,-0.021329,
+ 0,0,-1,-0.273618,0.470034,-0.021329,
+ 0,0,-1,-0.272122,0.470013,-0.021329,
+ 0.000003,0,-1,-0.007741,-0.120157,-0.021329,
+ 0,0,-1,-0.272122,0.470013,-0.021329,
+ 0.000006,-0.000006,-1,0.012875,0.469971,-0.021329,
+ 0.000003,0,-1,-0.007741,-0.120157,-0.021329,
+ 0.000006,-0.000006,-1,0.012875,0.469971,-0.021329,
+ -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+ -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+ 0.000006,-0.000006,-1,0.012875,0.469971,-0.021329,
+ 0,-0.000018,-1,0.029236,0.470013,-0.021329,
+ -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+ 0,-0.000018,-1,0.029236,0.470013,-0.021329,
+ 0,-0.000018,-1,0.302467,0.470013,-0.021329,
+ -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+ 0,-0.000018,-1,0.302467,0.470013,-0.021329,
+ 0,-0.000018,-1,0.303932,0.469993,-0.021329,
+ -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+ 0,-0.000018,-1,0.303932,0.469993,-0.021329,
+ 0,-0.000018,-1,0.377018,0.469993,-0.021329,
+ -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+ 0,-0.000018,-1,0.377018,0.469993,-0.021329,
+ -0.000017,-0.000011,-1,0.391707,0.469993,-0.021329,
+ -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+ -0.000017,-0.000011,-1,0.391707,0.469993,-0.021329,
+ -0.00001,-0.000003,-1,0.50133,0.11566,-0.021329,
+ -0.00001,-0.000003,-1,0.50133,0.11566,-0.021329,
+ -0.000017,-0.000011,-1,0.391707,0.469993,-0.021329,
+ 0,0,-1,0.394344,0.469951,-0.021329,
+ -0.00001,-0.000003,-1,0.50133,0.11566,-0.021329,
+ 0,0,-1,0.394344,0.469951,-0.021329,
+ 0,0,-1,0.406812,0.469993,-0.021329,
+ -0.00001,-0.000003,-1,0.50133,0.11566,-0.021329,
+ 0,0,-1,0.406812,0.469993,-0.021329,
+ 0,0,-1,0.726874,0.469993,-0.021329,
+ -0.00001,-0.000003,-1,0.50133,0.11566,-0.021329,
+ 0,0,-1,0.726874,0.469993,-0.021329,
+ 0,0,-1,0.503029,0.11566,-0.021329,
+ 0,0,-1,0.503029,0.11566,-0.021329,
+ 0,0,-1,0.726874,0.469993,-0.021329,
+ 0,0,-1,0.512455,0.115661,-0.021329,
+ 0,0,-1,0.512455,0.115661,-0.021329,
+ 0,0,-1,0.726874,0.469993,-0.021329,
+ 0,0,-1,0.517242,0.115661,-0.021329,
+ 0,0,-1,0.517242,0.115661,-0.021329,
+ 0,0,-1,0.726874,0.469993,-0.021329,
+ 0,0,-1,0.525941,0.115661,-0.021329,
+ 0,0,-1,0.525941,0.115661,-0.021329,
+ 0,0,-1,0.726874,0.469993,-0.021329,
+ 0,0,-1,0.53006,0.115661,-0.021329,
+ 0,0,-1,0.53006,0.115661,-0.021329,
+ 0,0,-1,0.726874,0.469993,-0.021329,
+ 0,0,-1,1.105769,0.115699,-0.021329,
+ 0,0,-1,1.105769,0.115699,-0.021329,
+ 0,0,-1,0.726874,0.469993,-0.021329,
+ 0,0,-1,0.72963,0.469668,-0.021329,
+ 0,0,-1,1.105769,0.115699,-0.021329,
+ 0,0,-1,0.72963,0.469668,-0.021329,
+ 0,0,-1,1.085566,0.469669,-0.021329,
+ 0,0,-1,1.105769,0.115699,-0.021329,
+ 0,0,-1,1.085566,0.469669,-0.021329,
+ 0,0,-1,1.086592,0.46967,-0.021329,
+ 0,0,-1,1.105769,0.115699,-0.021329,
+ 0,0,-1,1.086592,0.46967,-0.021329,
+ 0,0,-1,1.157159,0.469626,-0.021329,
+ 0,0,-1,1.105769,0.115699,-0.021329,
+ 0,0,-1,1.157159,0.469626,-0.021329,
+ 0,0,-1,1.11936,0.115699,-0.021329,
+ 0,0,-1,1.11936,0.115699,-0.021329,
+ 0,0,-1,1.157159,0.469626,-0.021329,
+ 0,0,-1,1.138614,0.115699,-0.021329,
+ 0,0,-1,1.138614,0.115699,-0.021329,
+ 0,0,-1,1.157159,0.469626,-0.021329,
+ 0,0,-1,1.150338,0.115699,-0.021329,
+ 0,0,-1,1.150338,0.115699,-0.021329,
+ 0,0,-1,1.157159,0.469626,-0.021329,
+ 0,0,-1,1.155792,0.115699,-0.021329,
+ 0,0,-1,1.155792,0.115699,-0.021329,
+ 0,0,-1,1.157159,0.469626,-0.021329,
+ 0,0,-1,1.158086,0.115699,-0.021329,
+ 0,0,-1,1.158086,0.115699,-0.021329,
+ 0,0,-1,1.157159,0.469626,-0.021329,
+ 0,0,-1,1.159104,0.4693,-0.021329,
+ 0,0,-1,1.158086,0.115699,-0.021329,
+ 0,0,-1,1.159104,0.4693,-0.021329,
+ 0,0,-1,1.159105,0.115699,-0.021329,
+ 0,0,-1,1.159105,0.115699,-0.021329,
+ 0,0,-1,1.159104,0.4693,-0.021329,
+ 0,0,-1,1.188641,0.464041,-0.021329,
+ 0,0,-1,1.159105,0.115699,-0.021329,
+ 0,0,-1,1.188641,0.464041,-0.021329,
+ 0,0,-1,1.192294,0.121731,-0.021329,
+ 0,0,-1,1.192294,0.121731,-0.021329,
+ 0,0,-1,1.188641,0.464041,-0.021329,
+ 0,0,-1,1.192338,0.463307,-0.021329,
+ 0,0,-1,1.192294,0.121731,-0.021329,
+ 0,0,-1,1.192338,0.463307,-0.021329,
+ 0,0,-1,1.223677,0.139521,-0.021329,
+ 0,0,-1,1.223677,0.139521,-0.021329,
+ 0,0,-1,1.192338,0.463307,-0.021329,
+ 0,0,-1,1.219931,0.447894,-0.021329,
+ 0,0,-1,1.223677,0.139521,-0.021329,
+ 0,0,-1,1.219931,0.447894,-0.021329,
+ 0,0,-1,1.223803,0.445458,-0.021329,
+ 0,0,-1,1.223677,0.139521,-0.021329,
+ 0,0,-1,1.223803,0.445458,-0.021329,
+ 0,0,-1,1.250463,0.167512,-0.021329,
+ 0,0,-1,1.250463,0.167512,-0.021329,
+ 0,0,-1,1.223803,0.445458,-0.021329,
+ 0,0,-1,1.250799,0.417372,-0.021329,
+ 0,0,-1,1.250463,0.167512,-0.021329,
+ 0,0,-1,1.250799,0.417372,-0.021329,
+ 0,0,-1,1.27116,0.204368,-0.021329,
+ 0,0,-1,1.27116,0.204368,-0.021329,
+ 0,0,-1,1.250799,0.417372,-0.021329,
+ 0,0,-1,1.271248,0.380955,-0.021329,
+ 0,0,-1,1.27116,0.204368,-0.021329,
+ 0,0,-1,1.271248,0.380955,-0.021329,
+ 0,0,-1,1.284116,0.24723,-0.021329,
+ 0,0,-1,1.284116,0.24723,-0.021329,
+ 0,0,-1,1.271248,0.380955,-0.021329,
+ 0,0,-1,1.284174,0.338115,-0.021329,
+ 0,0,-1,1.284116,0.24723,-0.021329,
+ 0,0,-1,1.284174,0.338115,-0.021329,
+ 0,0,-1,1.288529,0.292549,-0.021329,
+ -0.000315,-1,0.00014,0.428578,0.1157,0.099871,
+ -0.000321,-1,0.000136,0.377134,0.1157,-0.021323,
+ -0.000086,-1,0.00026,0.50133,0.11566,-0.021329,
+ 0.000128,-1,0.000374,0.453243,0.1157,0.101903,
+ -0.000086,-1,0.00026,0.50133,0.11566,-0.021329,
+ 0.000057,-1,0.000347,0.503029,0.11566,-0.021329,
+ -0.000086,-1,0.00026,0.50133,0.11566,-0.021329,
+ 0.000128,-1,0.000374,0.453243,0.1157,0.101903,
+ 0.000001,-1,0.000294,0.435364,0.1157,0.114425,
+ 0,-1,0,0.711069,0.115699,0.073242,
+ 0.000022,-1,0.000133,1.105769,0.115699,-0.021329,
+ 0,-1,0,1.11936,0.115699,-0.021329,
+ 0.000022,-1,0.000133,1.105769,0.115699,-0.021329,
+ 0,-1,0,0.711069,0.115699,0.073242,
+ 0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+ 0,-1,0,0.854313,0.115699,0.11448,
+ 0,-1,0,1.11936,0.115699,-0.021329,
+ 0,-1,0,1.138614,0.115699,-0.021329,
+ 0,-1,0,1.11936,0.115699,-0.021329,
+ 0,-1,0,0.854313,0.115699,0.11448,
+ 0,-1,0,0.711069,0.115699,0.073242,
+ 0,-1,0,0.994243,0.115699,0.189857,
+ 0,-1,0,1.138614,0.115699,-0.021329,
+ 0,-1,0,1.150338,0.115699,-0.021329,
+ 0,-1,0,1.138614,0.115699,-0.021329,
+ 0,-1,0,0.994243,0.115699,0.189857,
+ 0,-1,0,0.854313,0.115699,0.11448,
+ 0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+ 0,-1,0,1.158086,0.115699,-0.021329,
+ 0.089681,-0.995669,-0.024519,1.159105,0.115699,-0.021329,
+ 0,-1,0,1.158086,0.115699,-0.021329,
+ 0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+ 0,-1,0,1.346671,0.115699,0.703372,
+ 0.509935,-0.836018,-0.202584,0.377134,0.1157,-0.021323,
+ 0.514271,-0.836016,-0.19132,-0.396035,-0.391356,0.119998,
+ 0.515247,-0.836022,-0.18865,-0.007741,-0.120157,-0.021329,
+ 0.514271,-0.836016,-0.19132,-0.396035,-0.391356,0.119998,
+ 0.509935,-0.836018,-0.202584,0.377134,0.1157,-0.021323,
+ 0.507543,-0.836018,-0.208504,-0.339188,-0.391356,0.268089,
+ 0,-1,0,1.226889,0.115699,0.4205,
+ 0,-1,0,1.155792,0.115699,-0.021329,
+ 0,-1,0,1.158086,0.115699,-0.021329,
+ 0,-1,0,1.155792,0.115699,-0.021329,
+ 0,-1,0,1.226889,0.115699,0.4205,
+ 0,-1,0,1.121322,0.115699,0.294234,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0.000109,-1,0.000002,-0.447809,-0.391356,-0.021329,
+ 0,-1,0,-0.445302,-0.391356,-0.021329,
+ 0.000109,-1,0.000002,-0.447809,-0.391356,-0.021329,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+ 0,-1,0,1.121322,0.115699,0.294234,
+ 0,-1,0,1.150338,0.115699,-0.021329,
+ 0,-1,0,1.155792,0.115699,-0.021329,
+ 0,-1,0,1.150338,0.115699,-0.021329,
+ 0,-1,0,1.121322,0.115699,0.294234,
+ 0,-1,0,0.994243,0.115699,0.189857,
+ 0,-1,0,-1.473662,-0.391356,2.907315,
+ -0.135336,-0.989883,-0.042621,-1.133667,-0.391356,-0.021329,
+ 0,-1,0,-1.131951,-0.391356,-0.021329,
+ -0.135336,-0.989883,-0.042621,-1.133667,-0.391356,-0.021329,
+ 0,-1,0,-1.473662,-0.391356,2.907315,
+ -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+ -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+ 0,-1,0,-1.131951,-0.391356,-0.021329,
+ 0,-1,0,-1.129276,-0.391356,-0.021329,
+ 0,-1,0,-1.131951,-0.391356,-0.021329,
+ -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+ 0,-1,0,-1.473662,-0.391356,2.907315,
+ 0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+ 0.000057,-1,0.000347,0.503029,0.11566,-0.021329,
+ 0.000064,-1,0.000388,0.512455,0.115661,-0.021329,
+ 0.000057,-1,0.000347,0.503029,0.11566,-0.021329,
+ 0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+ 0.000128,-1,0.000374,0.453243,0.1157,0.101903,
+ -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+ -0.918203,0.270695,-0.289184,-1.229126,0.343294,-0.021329,
+ -0.942413,0.153754,-0.297013,-1.250661,0.25354,-0.021329,
+ -0.918203,0.270695,-0.289184,-1.229126,0.343294,-0.021329,
+ -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+ -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+ 0.500479,-0.836021,-0.224924,0.428578,0.1157,0.099871,
+ 0.507543,-0.836018,-0.208504,-0.339188,-0.391356,0.268089,
+ 0.509935,-0.836018,-0.202584,0.377134,0.1157,-0.021323,
+ 0.507543,-0.836018,-0.208504,-0.339188,-0.391356,0.268089,
+ 0.500479,-0.836021,-0.224924,0.428578,0.1157,0.099871,
+ 0.501259,-0.836022,-0.223175,-0.277207,-0.391356,0.414107,
+ -0.778493,-0.586351,-0.223921,-1.625487,-0.376692,1.429408,
+ -0.817175,-0.515734,-0.257377,-1.201167,-0.333701,-0.021329,
+ -0.772035,-0.587205,-0.243211,-1.168402,-0.376779,-0.021329,
+ -0.817175,-0.515734,-0.257377,-1.201167,-0.333701,-0.021329,
+ -0.778493,-0.586351,-0.223921,-1.625487,-0.376692,1.429408,
+ -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+ -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+ -0.904453,-0.317539,-0.284838,-1.229126,-0.26531,-0.021329,
+ -0.817175,-0.515734,-0.257377,-1.201167,-0.333701,-0.021329,
+ -0.904453,-0.317539,-0.284838,-1.229126,-0.26531,-0.021329,
+ -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+ -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+ -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+ -0.93637,-0.1904,-0.29489,-1.25058,-0.176182,-0.021329,
+ -0.904453,-0.317539,-0.284838,-1.229126,-0.26531,-0.021329,
+ -0.93637,-0.1904,-0.29489,-1.25058,-0.176182,-0.021329,
+ -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+ -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+ -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+ -0.949487,-0.095192,-0.299021,-1.264066,-0.07239,-0.021329,
+ -0.93637,-0.1904,-0.29489,-1.25058,-0.176182,-0.021329,
+ -0.949487,-0.095192,-0.299021,-1.264066,-0.07239,-0.021329,
+ -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+ -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+ -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+ -0.41126,-0.697198,-0.58718,0.435364,0.1157,0.114425,
+ -0.307986,-0.679834,-0.66556,0.453243,0.1157,0.101903,
+ -0.41126,-0.697198,-0.58718,0.435364,0.1157,0.114425,
+ -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+ -0.41126,-0.697198,-0.58718,0.406831,0.08212,0.174281,
+ -0.41126,-0.697198,-0.58718,0.406831,0.08212,0.174281,
+ -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+ -0.507972,-0.702526,-0.498419,0.391924,0.064577,0.205552,
+ -0.507972,-0.702526,-0.498419,0.391924,0.064577,0.205552,
+ -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+ -0.507497,-0.702632,-0.498754,0.615433,-0.255562,0.429129,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ 0.168416,0.984624,-0.046387,1.159104,0.4693,-0.021329,
+ 0.083141,0.995658,-0.041878,1.157159,0.469626,-0.021329,
+ 0.168416,0.984624,-0.046387,1.159104,0.4693,-0.021329,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ 0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ 0.078004,0.995473,-0.05431,0.72963,0.469668,-0.021329,
+ 0.058512,0.995903,-0.06894,0.726874,0.469993,-0.021329,
+ 0.078004,0.995473,-0.05431,0.72963,0.469668,-0.021329,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ 0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+ -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+ 0.009051,0.997085,-0.075758,0.303932,0.469993,-0.021329,
+ 0.006788,0.997025,-0.076781,0.302467,0.470013,-0.021329,
+ 0.009051,0.997085,-0.075758,0.303932,0.469993,-0.021329,
+ -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+ 0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+ -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+ -0.951352,0.071862,-0.299608,-1.264066,0.150374,-0.021329,
+ -0.953736,-0.013129,-0.300359,-1.268666,0.038992,-0.021329,
+ -0.951352,0.071862,-0.299608,-1.264066,0.150374,-0.021329,
+ -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+ -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+ -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+ -0.953736,-0.013129,-0.300359,-1.268666,0.038992,-0.021329,
+ -0.949487,-0.095192,-0.299021,-1.264066,-0.07239,-0.021329,
+ -0.953736,-0.013129,-0.300359,-1.268666,0.038992,-0.021329,
+ -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+ -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+ -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+ 0.009468,0.996863,-0.078582,-0.272122,0.470013,-0.021329,
+ 0.007064,0.996807,-0.079537,-0.273618,0.470034,-0.021329,
+ 0.009468,0.996863,-0.078582,-0.272122,0.470013,-0.021329,
+ -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+ -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+ -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+ -0.063557,0.995303,-0.073018,-0.701067,0.470034,-0.021329,
+ -0.047726,0.997181,-0.057905,-0.704134,0.46974,-0.021329,
+ -0.063557,0.995303,-0.073018,-0.701067,0.470034,-0.021329,
+ -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+ -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+ -0.302581,0.949833,-0.079128,-1.593323,0.46934,1.438224,
+ -0.114051,0.992145,-0.051394,-1.131355,0.469698,-0.021329,
+ -0.271068,0.958765,-0.085395,-1.133667,0.469297,-0.021329,
+ -0.114051,0.992145,-0.051394,-1.131355,0.469698,-0.021329,
+ -0.302581,0.949833,-0.079128,-1.593323,0.46934,1.438224,
+ -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+ -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+ -0.855994,0.441137,-0.269577,-1.201167,0.411684,-0.021329,
+ -0.918203,0.270695,-0.289184,-1.229126,0.343294,-0.021329,
+ -0.855994,0.441137,-0.269577,-1.201167,0.411684,-0.021329,
+ -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+ -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+ -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+ -0.728809,0.645974,-0.227057,-1.168401,0.454762,-0.021329,
+ -0.855994,0.441137,-0.269577,-1.201167,0.411684,-0.021329,
+ -0.728809,0.645974,-0.227057,-1.168401,0.454762,-0.021329,
+ -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+ -0.78424,0.585803,-0.204457,-1.625486,0.454676,1.429408,
+ 0,-1,0,0.500177,-0.391356,3.423108,
+ 0,-1,0,-0.396035,-0.391356,0.119998,
+ 0,-1,0,-0.339188,-0.391356,0.268089,
+ 0.117527,-0.982232,-0.146317,1.594074,0.1157,1.569594,
+ 0.259122,-0.963243,-0.070844,1.192294,0.121731,-0.021329,
+ 0.30254,-0.939741,-0.159236,1.6268,0.121747,1.567758
+};
+static const struct gllist handsy_model_palm_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 2082, handsy_model_palm_data, 0
+};
+const struct gllist *handsy_model_palm = &handsy_model_palm_frame;
+
+static const float handsy_model_thumb_distal_data[] = {
+ 0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+ 0.873922,-0.003805,0.486051,0.255586,0.077023,0.737599,
+ 0.873735,-0.002446,0.486396,0.259079,0.042565,0.731119,
+ 0.873922,-0.003805,0.486051,0.255586,0.077023,0.737599,
+ 0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+ 0.927775,0.05186,0.369519,0.290282,0.101111,0.675403,
+ 0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+ 0.873703,-0.000675,0.48646,0.263372,0.000216,0.723233,
+ 0.919547,0.019558,0.392492,0.301447,0,0.654848,
+ 0.873703,-0.000675,0.48646,0.263372,0.000216,0.723233,
+ 0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+ 0.873735,-0.002446,0.486396,0.259079,0.042565,0.731119,
+ 0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+ 0.500468,0.831871,0.239838,0.145913,0.309078,1.106884,
+ 0.312254,0.908542,0.277577,0.092482,0.341223,1.106884,
+ 0.500468,0.831871,0.239838,0.145913,0.309078,1.106884,
+ 0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+ 0.56058,0.750837,0.349275,0.145913,0.292777,1.143555,
+ 0.56058,0.750837,0.349275,0.145913,0.292777,1.143555,
+ 0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+ 0.539476,0.689911,0.482689,0.138564,0.274291,1.195089,
+ 0.876662,-0.009947,0.481004,0.173158,0.314854,0.891031,
+ 0.876902,-0.010028,0.480565,0.164839,0.309002,0.906089,
+ 0.876422,-0.009866,0.481442,0.17165,0.297474,0.89342,
+ 0.876902,-0.010028,0.480565,0.164839,0.309002,0.906089,
+ 0.85821,-0.006695,0.513255,0.162433,0.32323,0.910776,
+ 0.838263,-0.003347,0.545256,0.161481,0.30464,0.912126,
+ 0.85821,-0.006695,0.513255,0.162433,0.32323,0.910776,
+ 0.876902,-0.010028,0.480565,0.164839,0.309002,0.906089,
+ 0.876662,-0.009947,0.481004,0.173158,0.314854,0.891031,
+ 0.6758,0.511985,0.530251,0.182602,0.222325,1.198099,
+ 0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+ 0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+ 0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+ 0.6758,0.511985,0.530251,0.182602,0.222325,1.198099,
+ 0.62679,0.5624,0.539297,0.177609,0.230776,1.195089,
+ 0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+ 0.62679,0.5624,0.539297,0.177609,0.230776,1.195089,
+ 0.539476,0.689911,0.482689,0.138564,0.274291,1.195089,
+ 0.793481,0.350519,0.497519,0.210798,0.152003,1.211665,
+ 0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+ 0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+ 0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+ 0.793481,0.350519,0.497519,0.210798,0.152003,1.211665,
+ 0.763605,0.403416,0.504145,0.195133,0.201117,1.19609,
+ 0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+ 0.763605,0.403416,0.504145,0.195133,0.201117,1.19609,
+ 0.6758,0.511985,0.530251,0.182602,0.222325,1.198099,
+ -0.952716,-0.303863,0,0.224838,0.10798,1.346935,
+ -0.971429,-0.23733,0,0.226074,0.104106,1.208813,
+ -0.985558,-0.169336,0,0.226074,0.104106,1.347445,
+ -0.971429,-0.23733,0,0.226074,0.104106,1.208813,
+ -0.952716,-0.303863,0,0.224838,0.10798,1.346935,
+ -0.952716,-0.303863,0,0.210798,0.152003,1.211665,
+ -0.952716,-0.303863,0,0.210798,0.152003,1.211665,
+ -0.952716,-0.303863,0,0.224838,0.10798,1.346935,
+ -0.912598,-0.408857,0,0.195133,0.201117,1.308356,
+ -0.952716,-0.303863,0,0.210798,0.152003,1.211665,
+ -0.912598,-0.408857,0,0.195133,0.201117,1.308356,
+ -0.912598,-0.408857,0,0.195133,0.201117,1.19609,
+ 0.994901,0.100856,0,0.263372,0.000216,0.723233,
+ 0.994901,0.100856,0,0.263394,0,1.36115,
+ 0.994901,0.100856,0,0.263394,0,0.723195,
+ 0.994901,0.100856,0,0.263394,0,1.36115,
+ 0.994901,0.100856,0,0.263372,0.000216,0.723233,
+ 0.994901,0.100856,0,0.252447,0.10798,1.346935,
+ 0.994901,0.100856,0,0.252447,0.10798,1.346935,
+ 0.994901,0.100856,0,0.263372,0.000216,0.723233,
+ 0.994901,0.100856,0,0.259079,0.042565,0.731119,
+ 0.994901,0.100856,0,0.252447,0.10798,1.346935,
+ 0.994901,0.100856,0,0.259079,0.042565,0.731119,
+ 0.994901,0.100856,0,0.255586,0.077023,0.737599,
+ 0.994901,0.100856,0,0.252447,0.10798,1.346935,
+ 0.994901,0.100856,0,0.255586,0.077023,0.737599,
+ 0.985558,0.169336,0,0.251928,0.113103,0.744607,
+ 0.994901,0.100856,0,0.252447,0.10798,1.346935,
+ 0.985558,0.169336,0,0.251928,0.113103,0.744607,
+ 0.971429,0.23733,0,0.251928,0.113103,1.344813,
+ 0.919422,0.073474,0.386347,0.274037,0.157167,0.70531,
+ 0.874814,-0.007622,0.484399,0.237898,0.157092,0.77053,
+ 0.874447,-0.006469,0.485078,0.248003,0.12541,0.751819,
+ 0.874814,-0.007622,0.484399,0.237898,0.157092,0.77053,
+ 0.919422,0.073474,0.386347,0.274037,0.157167,0.70531,
+ 0.910258,0.063882,0.409084,0.259167,0.19321,0.732687,
+ 0.910258,0.063882,0.409084,0.259167,0.19321,0.732687,
+ 0.875344,-0.008697,0.483422,0.219541,0.214647,0.804721,
+ 0.874814,-0.007622,0.484399,0.237898,0.157092,0.77053,
+ 0.875344,-0.008697,0.483422,0.219541,0.214647,0.804721,
+ 0.910258,0.063882,0.409084,0.259167,0.19321,0.732687,
+ 0.875651,-0.009145,0.482859,0.230667,0.24695,0.785155,
+ 0.876066,-0.009661,0.482094,0.214135,0.2689,0.815591,
+ 0.876422,-0.009866,0.481442,0.17165,0.297474,0.89342,
+ 0.87595,-0.009537,0.482307,0.206427,0.238615,0.828993,
+ 0.876422,-0.009866,0.481442,0.17165,0.297474,0.89342,
+ 0.876066,-0.009661,0.482094,0.214135,0.2689,0.815591,
+ 0.876662,-0.009947,0.481004,0.173158,0.314854,0.891031,
+ 0.865819,0.160892,0.473783,0.228767,0.077538,1.217427,
+ 0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+ 0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+ 0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+ 0.865819,0.160892,0.473783,0.228767,0.077538,1.217427,
+ 0.844325,0.24079,0.478682,0.226074,0.104106,1.208813,
+ 0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+ 0.844325,0.24079,0.478682,0.226074,0.104106,1.208813,
+ 0.793481,0.350519,0.497519,0.210798,0.152003,1.211665,
+ 0.865819,0.160892,0.473783,0.228767,0.077538,1.217427,
+ 0.84071,0.076204,0.536096,0.207581,0,1.270833,
+ 0.881366,0.079889,0.46563,0.236628,0,1.215852,
+ 0.84071,0.076204,0.536096,0.207581,0,1.270833,
+ 0.865819,0.160892,0.473783,0.228767,0.077538,1.217427,
+ 0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+ -0.994901,-0.100856,0,0.236628,0,1.36115,
+ -0.994901,-0.100856,0,0.228767,0.077538,1.217427,
+ -0.994901,-0.100856,0,0.236628,0,1.215852,
+ -0.994901,-0.100856,0,0.228767,0.077538,1.217427,
+ -0.994901,-0.100856,0,0.236628,0,1.36115,
+ -0.985558,-0.169336,0,0.226074,0.104106,1.347445,
+ -0.994901,-0.100856,0,0.228767,0.077538,1.217427,
+ -0.985558,-0.169336,0,0.226074,0.104106,1.347445,
+ -0.971429,-0.23733,0,0.226074,0.104106,1.208813,
+ 0.873703,-0.000675,0.48646,0.263372,0.000216,0.723233,
+ 0.873705,0.00202,0.486453,0.263394,0,0.723195,
+ 0.919547,0.019558,0.392492,0.301447,0,0.654848,
+ 0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+ 0.919547,0.019558,0.392492,0.301447,0,0.654848,
+ 0.977781,0.093209,0.187769,0.429204,0,0,
+ 0.062066,0.491963,0.868401,0.218313,0.218497,1.297663,
+ 0.023594,0.566338,0.823835,0.19071,0.208602,1.305256,
+ 0.061786,0.414288,0.908046,0.195133,0.201117,1.308356,
+ 0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+ 0.512375,0.851663,0.110186,0.145913,0.322451,1.012229,
+ 0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+ 0.512375,0.851663,0.110186,0.145913,0.322451,1.012229,
+ 0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+ 0.500468,0.831871,0.239838,0.145913,0.309078,1.106884,
+ 0.500468,0.831871,0.239838,0.145913,0.309078,1.106884,
+ 0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+ 0.312254,0.908542,0.277577,0.092482,0.341223,1.106884,
+ 0.896572,0.442898,0,0.218313,0.218497,0.807025,
+ 0.860952,0.508686,0,0.173108,0.295007,1.238954,
+ 0.938151,0.346226,0,0.218313,0.218497,1.297663,
+ 0.860952,0.508686,0,0.173108,0.295007,1.238954,
+ 0.896572,0.442898,0,0.218313,0.218497,0.807025,
+ 0.860952,0.508686,0,0.206427,0.238615,0.828993,
+ 0.860952,0.508686,0,0.173108,0.295007,1.238954,
+ 0.860952,0.508686,0,0.206427,0.238615,0.828993,
+ 0.860952,0.508686,0,0.17165,0.297474,0.89342,
+ 0.860952,0.508686,0,0.173108,0.295007,1.238954,
+ 0.860952,0.508686,0,0.17165,0.297474,0.89342,
+ 0.860952,0.508686,0,0.164839,0.309002,1.220716,
+ 0.860952,0.508686,0,0.164839,0.309002,1.220716,
+ 0.860952,0.508686,0,0.17165,0.297474,0.89342,
+ 0.860952,0.508686,0,0.164839,0.309002,0.906089,
+ 0.99992,0.012221,0.00341,0.146283,0.284903,1.087672,
+ 0.99993,0.01068,0.005115,0.145913,0.292777,1.143555,
+ 0.999936,0.010052,0.005203,0.145913,0.284422,1.159696,
+ 0.99993,0.01068,0.005115,0.145913,0.292777,1.143555,
+ 0.99992,0.012221,0.00341,0.146283,0.284903,1.087672,
+ 0.999961,0.008668,0.001509,0.145913,0.309078,1.106884,
+ 0.952716,0.303863,0,0.248003,0.12541,0.751819,
+ 0.971429,0.23733,0,0.251928,0.113103,1.344813,
+ 0.985558,0.169336,0,0.251928,0.113103,0.744607,
+ 0.971429,0.23733,0,0.251928,0.113103,1.344813,
+ 0.952716,0.303863,0,0.248003,0.12541,0.751819,
+ 0.938151,0.346226,0,0.218313,0.218497,1.297663,
+ 0.938151,0.346226,0,0.218313,0.218497,1.297663,
+ 0.952716,0.303863,0,0.248003,0.12541,0.751819,
+ 0.952716,0.303863,0,0.237898,0.157092,0.77053,
+ 0.938151,0.346226,0,0.218313,0.218497,1.297663,
+ 0.952716,0.303863,0,0.237898,0.157092,0.77053,
+ 0.952716,0.303863,0,0.219541,0.214647,0.804721,
+ 0.938151,0.346226,0,0.218313,0.218497,1.297663,
+ 0.952716,0.303863,0,0.219541,0.214647,0.804721,
+ 0.896572,0.442898,0,0.218313,0.218497,0.807025,
+ 0,0.130526,0.991445,0.236628,0,1.36115,
+ -0.012701,0.21502,0.976527,0.252447,0.10798,1.346935,
+ 0.004021,0.220216,0.975443,0.226074,0.104106,1.347445,
+ -0.012701,0.21502,0.976527,0.252447,0.10798,1.346935,
+ 0,0.130526,0.991445,0.236628,0,1.36115,
+ 0,0.130526,0.991445,0.263394,0,1.36115,
+ 0.927775,0.05186,0.369519,0.290282,0.101111,0.675403,
+ 0.874222,-0.005676,0.485494,0.251928,0.113103,0.744607,
+ 0.873922,-0.003805,0.486051,0.255586,0.077023,0.737599,
+ 0.874222,-0.005676,0.485494,0.251928,0.113103,0.744607,
+ 0.927775,0.05186,0.369519,0.290282,0.101111,0.675403,
+ 0.919422,0.073474,0.386347,0.274037,0.157167,0.70531,
+ 0.874222,-0.005676,0.485494,0.251928,0.113103,0.744607,
+ 0.919422,0.073474,0.386347,0.274037,0.157167,0.70531,
+ 0.874447,-0.006469,0.485078,0.248003,0.12541,0.751819,
+ 0.026002,0.337305,0.941036,0.251928,0.113103,1.344813,
+ 0.061786,0.414288,0.908046,0.195133,0.201117,1.308356,
+ 0.025091,0.266414,0.963532,0.224838,0.10798,1.346935,
+ -0.912598,-0.408857,0,0.195133,0.201117,1.308356,
+ -0.860952,-0.508686,0,0.182602,0.222325,1.198099,
+ -0.912598,-0.408857,0,0.195133,0.201117,1.19609,
+ -0.860952,-0.508686,0,0.182602,0.222325,1.198099,
+ -0.912598,-0.408857,0,0.195133,0.201117,1.308356,
+ -0.862228,-0.506519,0.000588,0.19071,0.208602,1.305256,
+ -0.860952,-0.508686,0,0.182602,0.222325,1.198099,
+ -0.862228,-0.506519,0.000588,0.19071,0.208602,1.305256,
+ -0.825039,-0.55911,0.081898,0.177609,0.230776,1.195089,
+ 0.023594,0.566338,0.823835,0.19071,0.208602,1.305256,
+ 0,0.675426,0.737428,0.154063,0.295007,1.238954,
+ 0,0.608761,0.793353,0.146283,0.284903,1.246708,
+ 0,0.675426,0.737428,0.154063,0.295007,1.238954,
+ 0.023594,0.566338,0.823835,0.19071,0.208602,1.305256,
+ 0,0.675426,0.737428,0.173108,0.295007,1.238954,
+ 0,0.675426,0.737428,0.173108,0.295007,1.238954,
+ 0.023594,0.566338,0.823835,0.19071,0.208602,1.305256,
+ 0.062066,0.491963,0.868401,0.218313,0.218497,1.297663,
+ -0.012701,0.21502,0.976527,0.252447,0.10798,1.346935,
+ 0.026002,0.337305,0.941036,0.251928,0.113103,1.344813,
+ 0.004021,0.220216,0.975443,0.226074,0.104106,1.347445,
+ 0.866079,0.482943,0.129122,0.230667,0.24695,0.785155,
+ 0.938648,0.308986,0.15319,0.259167,0.19321,0.732687,
+ 0.902969,0.403992,0.146418,0.371702,0.214602,0,
+ 0.026002,0.337305,0.941036,0.251928,0.113103,1.344813,
+ 0.025091,0.266414,0.963532,0.224838,0.10798,1.346935,
+ 0.004021,0.220216,0.975443,0.226074,0.104106,1.347445,
+ 0.926797,0.118754,0.356292,0.274037,0.157167,0.70531,
+ 0.927775,0.05186,0.369519,0.290282,0.101111,0.675403,
+ 0.964645,0.195253,0.177021,0.414579,0.111086,0,
+ 0.141093,0.950715,0.276106,0.08622,0.34242,1.106884,
+ 0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+ 0.01826,0.970957,0.238555,0,0.35326,1.106884,
+ 0.01826,0.970957,0.238555,0,0.35326,1.106884,
+ 0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+ 0.288047,0.952171,0.101981,0.094656,0.35326,1.012229,
+ 0.01826,0.970957,0.238555,0,0.35326,1.106884,
+ 0.288047,0.952171,0.101981,0.094656,0.35326,1.012229,
+ -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+ 0.026002,0.337305,0.941036,0.251928,0.113103,1.344813,
+ 0.062066,0.491963,0.868401,0.218313,0.218497,1.297663,
+ 0.061786,0.414288,0.908046,0.195133,0.201117,1.308356,
+ 0,0.675426,0.737428,0.173108,0.295007,1.238954,
+ 0,0.793353,0.608761,0.164839,0.309002,1.220716,
+ 0,0.675426,0.737428,0.154063,0.295007,1.238954,
+ 0.774879,0.62326,0.105398,0.173158,0.314854,0.891031,
+ 0.845942,0.520777,0.114772,0.214135,0.2689,0.815591,
+ 0.768035,0.631773,0.104812,0.303493,0.303493,0,
+ 0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+ 0.495531,0.865546,0.072654,0.214602,0.371702,0,
+ 0.293356,0.953923,0.063035,0.111086,0.414579,0,
+ 0.100502,0.687999,0.718719,0.051933,0.254321,1.270833,
+ -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+ 0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+ 0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+ 0.141093,0.950715,0.276106,0.08622,0.34242,1.106884,
+ -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+ 0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+ -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+ 0.025206,0.28498,0.958202,0.032138,0.094157,1.365488,
+ 0.998302,0.002696,0.058183,0.145913,0.330528,0.935778,
+ 0.981055,0.006029,0.193634,0.146283,0.284903,0.933671,
+ 0.892207,0,0.451626,0.146283,0.330528,0.933671,
+ -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+ 0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+ -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+ -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+ 0.100502,0.687999,0.718719,0.051933,0.254321,1.270833,
+ 0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+ 0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+ -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+ -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+ 0.025206,0.28498,0.958202,0.032138,0.094157,1.365488,
+ -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+ -0.014849,0.257672,0.966118,0,0.094656,1.365488,
+ -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+ 0.141093,0.950715,0.276106,0.08622,0.34242,1.106884,
+ 0.01826,0.970957,0.238555,0,0.35326,1.106884,
+ 0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+ 0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+ 0.599673,0.101216,0.793819,0.151142,0.047328,1.328953,
+ 0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+ 0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+ 0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ -0.231736,0.145641,0.961815,-0.081974,0.047328,1.365488,
+ -0.260629,0.080414,0.962084,-0.09143,0.024499,1.365488,
+ 0.335836,0.144904,0.930708,0.085971,0.047328,1.365488,
+ 0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+ 0.273657,0.202688,0.940228,0.075614,0.066932,1.365488,
+ 0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+ 0.335836,0.144904,0.930708,0.085971,0.047328,1.365488,
+ 0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+ 0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+ 0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+ 0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+ 0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+ 0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+ 0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+ 0.335836,0.144904,0.930708,0.085971,0.047328,1.365488,
+ 0.273657,0.202688,0.940228,0.075614,0.066932,1.365488,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ 0.273657,0.202688,0.940228,0.075614,0.066932,1.365488,
+ 0.190766,0.247969,0.9498,0.062117,0.081974,1.365488,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ 0.273657,0.202688,0.940228,0.075614,0.066932,1.365488,
+ 0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+ 0.190766,0.247969,0.9498,0.062117,0.081974,1.365488,
+ 0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+ 0.273657,0.202688,0.940228,0.075614,0.066932,1.365488,
+ 0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+ 0.411599,0.037309,0.910601,0.094702,0,1.365488,
+ 0.374938,0.079168,0.923663,0.092482,0.024499,1.365488,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ 0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+ 0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+ 0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+ 0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+ 0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+ 0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+ 0.56058,0.750837,0.349275,0.145913,0.292777,1.143555,
+ 0.539476,0.689911,0.482689,0.138564,0.274291,1.195089,
+ 0.703455,0.631189,0.326728,0.145913,0.284422,1.159696,
+ -0.260629,0.080414,0.962084,-0.09143,0.024499,1.365488,
+ -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+ -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+ -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+ -0.260629,0.080414,0.962084,-0.09143,0.024499,1.365488,
+ -0.231736,0.145641,0.961815,-0.081974,0.047328,1.365488,
+ 0.190766,0.247969,0.9498,0.062117,0.081974,1.365488,
+ 0.092059,0.276195,0.956683,0.046399,0.09143,1.365488,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+ -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+ -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+ -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+ -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+ -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+ 0.190766,0.247969,0.9498,0.062117,0.081974,1.365488,
+ 0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+ 0.092059,0.276195,0.956683,0.046399,0.09143,1.365488,
+ 0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+ 0.190766,0.247969,0.9498,0.062117,0.081974,1.365488,
+ 0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+ -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+ -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+ -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+ -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+ -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+ -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+ 0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+ 0.539476,0.689911,0.482689,0.138564,0.274291,1.195089,
+ 0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+ 0.539476,0.689911,0.482689,0.138564,0.274291,1.195089,
+ 0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+ 0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+ 0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+ 0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+ 0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+ 0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+ 0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+ 0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+ -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+ -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+ -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+ -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+ -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+ -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+ -0.803542,-0.582394,0.123034,0.146283,0.284903,1.246708,
+ -0.825039,-0.55911,0.081898,0.177609,0.230776,1.195089,
+ -0.862228,-0.506519,0.000588,0.19071,0.208602,1.305256,
+ 0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+ 0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+ 0.288047,0.952171,0.101981,0.094656,0.35326,1.012229,
+ -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+ -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+ -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+ -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+ -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+ -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+ -0.231736,0.145641,0.961815,-0.081974,0.047328,1.365488,
+ -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+ -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+ -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+ -0.231736,0.145641,0.961815,-0.081974,0.047328,1.365488,
+ -0.187251,0.201824,0.961355,-0.066932,0.066932,1.365488,
+ 0.025206,0.28498,0.958202,0.032138,0.094157,1.365488,
+ -0.014849,0.257672,0.966118,0,0.094656,1.365488,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ -0.014849,0.257672,0.966118,0,0.094656,1.365488,
+ -0.062541,0.273564,0.959818,-0.024499,0.09143,1.365488,
+ -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+ -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+ -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+ -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+ -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+ -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+ -0.062541,0.273564,0.959818,-0.024499,0.09143,1.365488,
+ -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+ -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+ -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+ -0.062541,0.273564,0.959818,-0.024499,0.09143,1.365488,
+ -0.014849,0.257672,0.966118,0,0.094656,1.365488,
+ -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+ -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+ -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+ -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+ -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+ -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+ -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+ -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+ -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+ -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+ -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+ -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+ -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+ 0.01826,0.970957,0.238555,0,0.35326,1.106884,
+ -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+ 0.01826,0.970957,0.238555,0,0.35326,1.106884,
+ -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+ -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+ -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+ -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+ -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+ -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+ -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+ 0.01826,0.970957,0.238555,0,0.35326,1.106884,
+ -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+ -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+ -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+ -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+ -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+ -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+ 0.374938,0.079168,0.923663,0.092482,0.024499,1.365488,
+ 0.335836,0.144904,0.930708,0.085971,0.047328,1.365488,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+ -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+ -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+ -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+ -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+ -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+ -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+ -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+ -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+ -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+ -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+ -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+ -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+ -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+ -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+ -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+ -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+ -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ -0.062541,0.273564,0.959818,-0.024499,0.09143,1.365488,
+ -0.129745,0.245423,0.960694,-0.047328,0.081974,1.365488,
+ -0.129745,0.245423,0.960694,-0.047328,0.081974,1.365488,
+ -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+ -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+ -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+ -0.129745,0.245423,0.960694,-0.047328,0.081974,1.365488,
+ -0.062541,0.273564,0.959818,-0.024499,0.09143,1.365488,
+ -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+ -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+ -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+ -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+ -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+ -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ -0.129745,0.245423,0.960694,-0.047328,0.081974,1.365488,
+ -0.187251,0.201824,0.961355,-0.066932,0.066932,1.365488,
+ -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+ -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+ -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+ -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+ -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+ -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+ -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+ -0.838063,0.110333,0.5343,-0.316724,0,1.195089,
+ -0.70396,0.092678,0.704167,-0.258604,0,1.270833,
+ -0.838063,0.110333,0.5343,-0.316724,0,1.195089,
+ -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+ -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+ -0.187251,0.201824,0.961355,-0.066932,0.066932,1.365488,
+ -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+ -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+ -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+ -0.187251,0.201824,0.961355,-0.066932,0.066932,1.365488,
+ -0.129745,0.245423,0.960694,-0.047328,0.081974,1.365488,
+ 0.374938,0.079168,0.923663,0.092482,0.024499,1.365488,
+ 0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+ 0.335836,0.144904,0.930708,0.085971,0.047328,1.365488,
+ 0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+ 0.374938,0.079168,0.923663,0.092482,0.024499,1.365488,
+ 0.599673,0.101216,0.793819,0.151142,0.047328,1.328953,
+ -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+ -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+ -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+ -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+ -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+ -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+ -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+ -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+ -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+ -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+ -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+ -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+ -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+ -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+ -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+ -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+ -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+ -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ -0.187251,0.201824,0.961355,-0.066932,0.066932,1.365488,
+ -0.231736,0.145641,0.961815,-0.081974,0.047328,1.365488,
+ -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+ -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+ -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+ -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+ -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+ -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+ 0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+ 0.67336,0.061035,0.736791,0.155432,0,1.328953,
+ 0.84071,0.076204,0.536096,0.207581,0,1.270833,
+ 0.67336,0.061035,0.736791,0.155432,0,1.328953,
+ 0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+ 0.599673,0.101216,0.793819,0.151142,0.047328,1.328953,
+ -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+ -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+ -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+ -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+ -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+ -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ -0.260629,0.080414,0.962084,-0.09143,0.024499,1.365488,
+ -0.290881,0.038295,0.955993,-0.094656,0,1.365488,
+ -0.290881,0.038295,0.955993,-0.094656,0,1.365488,
+ -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+ -0.536052,0.070573,0.84123,-0.182861,0,1.328953,
+ -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+ -0.290881,0.038295,0.955993,-0.094656,0,1.365488,
+ -0.260629,0.080414,0.962084,-0.09143,0.024499,1.365488,
+ -0.536052,0.070573,0.84123,-0.182861,0,1.328953,
+ -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+ -0.70396,0.092678,0.704167,-0.258604,0,1.270833,
+ -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+ -0.536052,0.070573,0.84123,-0.182861,0,1.328953,
+ -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+ -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+ -0.946203,0.12457,0.298635,-0.35326,0,1.106884,
+ -0.838063,0.110333,0.5343,-0.316724,0,1.195089,
+ -0.946203,0.12457,0.298635,-0.35326,0,1.106884,
+ -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+ -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+ -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+ -0.985881,0.129794,0.105798,-0.365721,0,1.012229,
+ -0.946203,0.12457,0.298635,-0.35326,0,1.106884,
+ -0.985881,0.129794,0.105798,-0.365721,0,1.012229,
+ -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+ -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+ 0.411599,0.037309,0.910601,0.094702,0,1.365488,
+ 0.599673,0.101216,0.793819,0.151142,0.047328,1.328953,
+ 0.374938,0.079168,0.923663,0.092482,0.024499,1.365488,
+ 0.599673,0.101216,0.793819,0.151142,0.047328,1.328953,
+ 0.411599,0.037309,0.910601,0.094702,0,1.365488,
+ 0.67336,0.061035,0.736791,0.155432,0,1.328953,
+ 0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+ 0.100502,0.687999,0.718719,0.051933,0.254321,1.270833,
+ 0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+ 0.100502,0.687999,0.718719,0.051933,0.254321,1.270833,
+ 0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+ 0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+ 0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+ 0.312254,0.908542,0.277577,0.092482,0.341223,1.106884,
+ 0.141093,0.950715,0.276106,0.08622,0.34242,1.106884,
+ 0.312254,0.908542,0.277577,0.092482,0.341223,1.106884,
+ 0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+ 0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+ 0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+ 0.293356,0.953923,0.063035,0.111086,0.414579,0,
+ 0.288047,0.952171,0.101981,0.094656,0.35326,1.012229,
+ 0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+ 0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+ 0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+ 0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+ 0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+ 0.100502,0.687999,0.718719,0.051933,0.254321,1.270833,
+ 0.838263,-0.003347,0.545256,0.161481,0.30464,0.912126,
+ 0.892207,0,0.451626,0.146283,0.330528,0.933671,
+ 0.923345,0,0.383971,0.146283,0.284903,0.933671,
+ 0.892207,0,0.451626,0.146283,0.330528,0.933671,
+ 0.838263,-0.003347,0.545256,0.161481,0.30464,0.912126,
+ 0.85821,-0.006695,0.513255,0.162433,0.32323,0.910776,
+ 0.092059,0.276195,0.956683,0.046399,0.09143,1.365488,
+ 0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+ 0.025206,0.28498,0.958202,0.032138,0.094157,1.365488,
+ 0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+ 0.092059,0.276195,0.956683,0.046399,0.09143,1.365488,
+ 0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+ 0.092059,0.276195,0.956683,0.046399,0.09143,1.365488,
+ 0.025206,0.28498,0.958202,0.032138,0.094157,1.365488,
+ 0.024964,0.082992,0.996238,0.029532,0,1.37795,
+ 0.312254,0.908542,0.277577,0.092482,0.341223,1.106884,
+ 0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+ 0.141093,0.950715,0.276106,0.08622,0.34242,1.106884,
+ 0.875651,-0.009145,0.482859,0.230667,0.24695,0.785155,
+ 0.875834,-0.009413,0.48252,0.218313,0.218497,0.807025,
+ 0.875344,-0.008697,0.483422,0.219541,0.214647,0.804721,
+ 0.875834,-0.009413,0.48252,0.218313,0.218497,0.807025,
+ 0.875651,-0.009145,0.482859,0.230667,0.24695,0.785155,
+ 0.87595,-0.009537,0.482307,0.206427,0.238615,0.828993,
+ 0.87595,-0.009537,0.482307,0.206427,0.238615,0.828993,
+ 0.875651,-0.009145,0.482859,0.230667,0.24695,0.785155,
+ 0.876066,-0.009661,0.482094,0.214135,0.2689,0.815591,
+ -0.798008,0.602646,0.000065,0.146283,0.284903,1.246708,
+ -0.800822,0.598902,0.000098,0.145913,0.284422,1.159696,
+ -0.809157,0.587593,0.000196,0.138564,0.274291,1.195089,
+ 0.964645,0.195253,0.177021,0.414579,0.111086,0,
+ 0.927775,0.05186,0.369519,0.290282,0.101111,0.675403,
+ 0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+ 0.610633,0.787554,0.082987,0.162433,0.32323,0.910776,
+ 0.774879,0.62326,0.105398,0.173158,0.314854,0.891031,
+ 0.768035,0.631773,0.104812,0.303493,0.303493,0,
+ -0.798008,0.602646,0.000065,0.146283,0.284903,1.246708,
+ -0.792329,0.610094,0,0.146283,0.284903,1.087672,
+ -0.800822,0.598902,0.000098,0.145913,0.284422,1.159696,
+ -0.792329,0.610094,0,0.146283,0.284903,1.087672,
+ -0.798008,0.602646,0.000065,0.146283,0.284903,1.246708,
+ -0.792329,0.610094,0,0.154063,0.295007,1.238954,
+ -0.792329,0.610094,0,0.146283,0.284903,1.087672,
+ -0.792329,0.610094,0,0.154063,0.295007,1.238954,
+ -0.792329,0.610094,0,0.146283,0.284903,0.933671,
+ -0.792329,0.610094,0,0.146283,0.284903,0.933671,
+ -0.792329,0.610094,0,0.154063,0.295007,1.238954,
+ -0.792329,0.610094,0,0.161481,0.30464,0.912126,
+ -0.792329,0.610094,0,0.161481,0.30464,0.912126,
+ -0.792329,0.610094,0,0.154063,0.295007,1.238954,
+ -0.792329,0.610094,0,0.164839,0.309002,1.220716,
+ -0.792329,0.610094,0,0.161481,0.30464,0.912126,
+ -0.792329,0.610094,0,0.164839,0.309002,1.220716,
+ -0.792329,0.610094,0,0.164839,0.309002,0.906089,
+ 0.902969,0.403992,0.146418,0.371702,0.214602,0,
+ 0.924479,0.12193,0.361208,0.259167,0.19321,0.732687,
+ 0.926797,0.118754,0.356292,0.274037,0.157167,0.70531,
+ -0.803542,-0.582394,0.123034,0.146283,0.284903,1.246708,
+ -0.72232,-0.648117,0.241242,0.138564,0.274291,1.195089,
+ -0.825039,-0.55911,0.081898,0.177609,0.230776,1.195089,
+ 0.902969,0.403992,0.146418,0.371702,0.214602,0,
+ 0.945888,0.279771,0.16439,0.274037,0.157167,0.70531,
+ 0.964645,0.195253,0.177021,0.414579,0.111086,0,
+ 0.768035,0.631773,0.104812,0.303493,0.303493,0,
+ 0.845942,0.520777,0.114772,0.214135,0.2689,0.815591,
+ 0.866079,0.482943,0.129122,0.230667,0.24695,0.785155,
+ 0.610633,0.787554,0.082987,0.162433,0.32323,0.910776,
+ 0.768035,0.631773,0.104812,0.303493,0.303493,0,
+ 0.495531,0.865546,0.072654,0.214602,0.371702,0,
+ 0.768035,0.631773,0.104812,0.303493,0.303493,0,
+ 0.866079,0.482943,0.129122,0.230667,0.24695,0.785155,
+ 0.902969,0.403992,0.146418,0.371702,0.214602,0,
+ 0.964645,0.195253,0.177021,0.414579,0.111086,0,
+ 0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+ 0.977781,0.093209,0.187769,0.429204,0,0,
+ 0.998302,0.002696,0.058183,0.145913,0.330528,0.935778,
+ 0.999961,0.008668,0.001509,0.145913,0.309078,1.106884,
+ 0.998275,0.007814,0.058184,0.146283,0.284903,0.933671,
+ 0.999961,0.008668,0.001509,0.145913,0.309078,1.106884,
+ 0.998302,0.002696,0.058183,0.145913,0.330528,0.935778,
+ 1,0,0,0.145913,0.322451,1.012229,
+ 0.999961,0.008668,0.001509,0.145913,0.309078,1.106884,
+ 0.99992,0.012221,0.00341,0.146283,0.284903,1.087672,
+ 0.998275,0.007814,0.058184,0.146283,0.284903,0.933671,
+ 0.499452,0.862679,0.079575,0.146283,0.330528,0.933671,
+ 0.610633,0.787554,0.082987,0.162433,0.32323,0.910776,
+ 0.495531,0.865546,0.072654,0.214602,0.371702,0,
+ 0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+ 0.499452,0.862679,0.079575,0.146283,0.330528,0.933671,
+ 0.495531,0.865546,0.072654,0.214602,0.371702,0,
+ 0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+ 0.513415,0.853391,0.090157,0.145913,0.330528,0.935778,
+ 0.499452,0.862679,0.079575,0.146283,0.330528,0.933671,
+ 0.513415,0.853391,0.090157,0.145913,0.330528,0.935778,
+ 0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+ 0.512375,0.851663,0.110186,0.145913,0.322451,1.012229,
+ -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+ -0.842678,0.535089,0.059785,-0.351049,0.202678,0.351049,
+ -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+ -0.842678,0.535089,0.059785,-0.351049,0.202678,0.351049,
+ -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+ -0.794265,0.604621,0.059807,-0.341369,0.216238,0.341369,
+ -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+ -0.796561,0.601545,0.060284,-0.319565,0.247297,0.319565,
+ -0.794265,0.604621,0.059807,-0.341369,0.216238,0.341369,
+ -0.796561,0.601545,0.060284,-0.319565,0.247297,0.319565,
+ -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+ -0.676046,0.734345,0.060814,-0.289756,0.289756,0.289756,
+ -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+ -0.952168,0.299814,0.059064,-0.388916,0.10421,0.388916,
+ -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+ -0.952168,0.299814,0.059064,-0.388916,0.10421,0.388916,
+ -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+ -0.923255,0.379637,0.058951,-0.382487,0.120717,0.382487,
+ -0.842678,0.535089,0.059785,-0.351049,0.202678,0.351049,
+ -0.923255,0.379637,0.058951,-0.382487,0.120717,0.382487,
+ -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+ -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+ -0.989755,0.130304,0.058357,-0.401718,0,0.401718,
+ -0.985881,0.129794,0.105798,-0.365721,0,1.012229,
+ -0.989755,0.130304,0.058357,-0.401718,0,0.401718,
+ -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+ -0.989867,0.129393,0.058479,-0.399435,0.01836,0.399435,
+ -0.952168,0.299814,0.059064,-0.388916,0.10421,0.388916,
+ -0.989867,0.129393,0.058479,-0.399435,0.01836,0.399435,
+ -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+ -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+ -0.463375,0.883993,0.061975,-0.207855,0.360015,0.207855,
+ -0.611294,0.789058,0.060884,-0.277897,0.29976,0.277897,
+ -0.676046,0.734345,0.060814,-0.289756,0.289756,0.289756,
+ -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+ -0.611294,0.789058,0.060884,-0.277897,0.29976,0.277897,
+ -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+ -0.676046,0.734345,0.060814,-0.289756,0.289756,0.289756,
+ -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+ -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+ -0.217377,0.974082,0.062537,-0.109312,0.407957,0.109312,
+ -0.38421,0.921178,0.061758,-0.194861,0.366264,0.194861,
+ -0.463375,0.883993,0.061975,-0.207855,0.360015,0.207855,
+ -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+ -0.38421,0.921178,0.061758,-0.194861,0.366264,0.194861,
+ -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+ -0.463375,0.883993,0.061975,-0.207855,0.360015,0.207855,
+ -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+ -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+ 0.293356,0.953923,0.063035,0.111086,0.414579,0,
+ 0,0.998039,0.062593,0,0.429204,0,
+ 0.293356,0.953923,0.063035,0.111086,0.414579,0,
+ -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+ 0.288047,0.952171,0.101981,0.094656,0.35326,1.012229,
+ -0.217377,0.974082,0.062537,-0.109312,0.407957,0.109312,
+ -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+ 0,0.998039,0.062593,0,0.429204,0,
+ -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+ -0.217377,0.974082,0.062537,-0.109312,0.407957,0.109312,
+ -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+ 0,0,-1,0,0.429204,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0,0.214602,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0,0.429204,0,
+ 0,0,-1,0.111086,0.414579,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0.111086,0.414579,0,
+ 0,0,-1,0.214602,0.371702,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0.214602,0.371702,0,
+ 0,0,-1,0.303493,0.303493,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0.303493,0.303493,0,
+ 0,0,-1,0.371702,0.214602,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0.371702,0.214602,0,
+ 0,0,-1,0.356283,0,0,
+ 0,0,-1,0.356283,0,0,
+ 0,0,-1,0.371702,0.214602,0,
+ 0,0,-1,0.429204,0,0,
+ 0,0,-1,0.429204,0,0,
+ 0,0,-1,0.371702,0.214602,0,
+ 0,0,-1,0.414579,0.111086,0,
+ -0.707107,0,-0.707107,-0.399435,0.01836,0.399435,
+ -0.707107,0,-0.707107,-0.25193,0,0.25193,
+ -0.707107,0,-0.707107,-0.401718,0,0.401718,
+ -0.707107,0,-0.707107,-0.25193,0,0.25193,
+ -0.707107,0,-0.707107,-0.399435,0.01836,0.399435,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.399435,0.01836,0.399435,
+ -0.707107,0,-0.707107,-0.388916,0.10421,0.388916,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.388916,0.10421,0.388916,
+ -0.707107,0,-0.707107,-0.382487,0.120717,0.382487,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.382487,0.120717,0.382487,
+ -0.707107,0,-0.707107,-0.351049,0.202678,0.351049,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.351049,0.202678,0.351049,
+ -0.707107,0,-0.707107,-0.341369,0.216238,0.341369,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.341369,0.216238,0.341369,
+ -0.707107,0,-0.707107,0,0.214602,0,
+ -0.707107,0,-0.707107,0,0.214602,0,
+ -0.707107,0,-0.707107,-0.341369,0.216238,0.341369,
+ -0.707107,0,-0.707107,0,0.429204,0,
+ -0.707107,0,-0.707107,0,0.429204,0,
+ -0.707107,0,-0.707107,-0.341369,0.216238,0.341369,
+ -0.707107,0,-0.707107,-0.319565,0.247297,0.319565,
+ -0.707107,0,-0.707107,0,0.429204,0,
+ -0.707107,0,-0.707107,-0.319565,0.247297,0.319565,
+ -0.707107,0,-0.707107,-0.289756,0.289756,0.289756,
+ -0.707107,0,-0.707107,0,0.429204,0,
+ -0.707107,0,-0.707107,-0.289756,0.289756,0.289756,
+ -0.707107,0,-0.707107,-0.277897,0.29976,0.277897,
+ -0.707107,0,-0.707107,0,0.429204,0,
+ -0.707107,0,-0.707107,-0.277897,0.29976,0.277897,
+ -0.707107,0,-0.707107,-0.207855,0.360015,0.207855,
+ -0.707107,0,-0.707107,0,0.429204,0,
+ -0.707107,0,-0.707107,-0.207855,0.360015,0.207855,
+ -0.707107,0,-0.707107,-0.194861,0.366264,0.194861,
+ -0.707107,0,-0.707107,0,0.429204,0,
+ -0.707107,0,-0.707107,-0.194861,0.366264,0.194861,
+ -0.707107,0,-0.707107,-0.109312,0.407957,0.109312
+};
+static const struct gllist handsy_model_thumb_distal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 804, handsy_model_thumb_distal_data, 0
+};
+const struct gllist *handsy_model_thumb_distal = &handsy_model_thumb_distal_frame;
+
+static const float handsy_model_thumb_metacarpal_data[] = {
+ -0.965926,0,-0.258819,-0.344143,0,1.403844,
+ -0.866025,0,-0.5,-0.30855,0.214602,1.317916,
+ -0.866025,0,-0.5,-0.30855,0,1.317916,
+ -0.866025,0,-0.5,-0.30855,0.214602,1.317916,
+ -0.965926,0,-0.258819,-0.344143,0,1.403844,
+ -0.965926,0,-0.258819,-0.344143,0.214602,1.403844,
+ 0.258819,0,0.965926,0.092213,0,1.8402,
+ 0,0,1,0,0.214602,1.85234,
+ 0,0,1,0,0,1.85234,
+ 0,0,1,0,0.214602,1.85234,
+ 0.258819,0,0.965926,0.092213,0,1.8402,
+ 0.258819,0,0.965926,0.092213,0.214602,1.8402,
+ -0.675426,0,0.737428,-0.25193,0,1.747987,
+ -0.5,0,0.866025,-0.178141,0.214602,1.804607,
+ -0.737428,0,0.675426,-0.25193,0.214602,1.747987,
+ -0.5,0,0.866025,-0.178141,0.214602,1.804607,
+ -0.675426,0,0.737428,-0.25193,0,1.747987,
+ -0.5,0,0.866025,-0.178141,0,1.804607,
+ 0.707107,0,0.707107,0.25193,0,1.747987,
+ 0.5,0,0.866025,0.178141,0.214602,1.804607,
+ 0.5,0,0.866025,0.178141,0,1.804607,
+ 0.5,0,0.866025,0.178141,0.214602,1.804607,
+ 0.707107,0,0.707107,0.25193,0,1.747987,
+ 0.707107,0,0.707107,0.25193,0.214602,1.747987,
+ -0.866025,0,0.5,-0.30855,0,1.674199,
+ -0.965926,0,0.258819,-0.344143,0.214602,1.58827,
+ -0.965926,0,0.258819,-0.344143,0,1.58827,
+ -0.965926,0,0.258819,-0.344143,0.214602,1.58827,
+ -0.866025,0,0.5,-0.30855,0,1.674199,
+ -0.866025,0,0.5,-0.30855,0.214602,1.674199,
+ -0.258819,0,0.965926,-0.092213,0,1.8402,
+ -0.5,0,0.866025,-0.178141,0.214602,1.804607,
+ -0.5,0,0.866025,-0.178141,0,1.804607,
+ -0.5,0,0.866025,-0.178141,0.214602,1.804607,
+ -0.258819,0,0.965926,-0.092213,0,1.8402,
+ -0.258819,0,0.965926,-0.092213,0.214602,1.8402,
+ 0.866025,0,0.5,0.30855,0.214602,1.674199,
+ 0.707107,0,0.707107,0.25193,0,1.747987,
+ 0.866025,0,0.5,0.30855,0,1.674199,
+ 0.707107,0,0.707107,0.25193,0,1.747987,
+ 0.866025,0,0.5,0.30855,0.214602,1.674199,
+ 0.707107,0,0.707107,0.25193,0.214602,1.747987,
+ 0.991445,0,0.130526,0.356283,0.214602,1.496057,
+ 0.965926,0,0.258819,0.344143,0,1.58827,
+ 0.991445,0,0.130526,0.356283,0,1.496057,
+ 0.965926,0,0.258819,0.344143,0,1.58827,
+ 0.991445,0,0.130526,0.356283,0.214602,1.496057,
+ 0.965926,0,0.258819,0.344143,0.214602,1.58827,
+ -0.999038,0,-0.043842,-0.356283,0.214602,1.496057,
+ -0.965926,0,-0.258819,-0.344143,0,1.403844,
+ -0.999038,0,0.043842,-0.356283,0,1.496057,
+ -0.965926,0,-0.258819,-0.344143,0,1.403844,
+ -0.999038,0,-0.043842,-0.356283,0.214602,1.496057,
+ -0.965926,0,-0.258819,-0.344143,0.214602,1.403844,
+ -0.866025,0,-0.5,-0.30855,0.214602,1.317916,
+ -0.793353,0,-0.608761,-0.25193,0,1.244127,
+ -0.866025,0,-0.5,-0.30855,0,1.317916,
+ -0.793353,0,-0.608761,-0.25193,0,1.244127,
+ -0.866025,0,-0.5,-0.30855,0.214602,1.317916,
+ -0.793353,0,-0.608761,-0.25193,0.214602,1.244127,
+ 0.965926,0,0.258819,0.344143,0,1.58827,
+ 0.866025,0,0.5,0.30855,0.214602,1.674199,
+ 0.866025,0,0.5,0.30855,0,1.674199,
+ 0.866025,0,0.5,0.30855,0.214602,1.674199,
+ 0.965926,0,0.258819,0.344143,0,1.58827,
+ 0.965926,0,0.258819,0.344143,0.214602,1.58827,
+ 0.258819,0,0.965926,0.092213,0,1.8402,
+ 0.5,0,0.866025,0.178141,0.214602,1.804607,
+ 0.258819,0,0.965926,0.092213,0.214602,1.8402,
+ 0.5,0,0.866025,0.178141,0.214602,1.804607,
+ 0.258819,0,0.965926,0.092213,0,1.8402,
+ 0.5,0,0.866025,0.178141,0,1.804607,
+ -0.737428,0,0.675426,-0.25193,0.214602,1.747987,
+ -0.866025,0,0.5,-0.30855,0,1.674199,
+ -0.675426,0,0.737428,-0.25193,0,1.747987,
+ -0.866025,0,0.5,-0.30855,0,1.674199,
+ -0.737428,0,0.675426,-0.25193,0.214602,1.747987,
+ -0.866025,0,0.5,-0.30855,0.214602,1.674199,
+ -0.258819,0,0.965926,-0.092213,0,1.8402,
+ 0,0,1,0,0.214602,1.85234,
+ -0.258819,0,0.965926,-0.092213,0.214602,1.8402,
+ 0,0,1,0,0.214602,1.85234,
+ -0.258819,0,0.965926,-0.092213,0,1.8402,
+ 0,0,1,0,0,1.85234,
+ -0.965926,0,0.258819,-0.344143,0.214602,1.58827,
+ -0.999038,0,0.043842,-0.356283,0,1.496057,
+ -0.965926,0,0.258819,-0.344143,0,1.58827,
+ -0.999038,0,0.043842,-0.356283,0,1.496057,
+ -0.965926,0,0.258819,-0.344143,0.214602,1.58827,
+ -0.999038,0,-0.043842,-0.356283,0.214602,1.496057,
+ 0,1,0,-0.30855,0.214602,1.317916,
+ 0,1,0,0,0.214602,1.496057,
+ 0,1,0,-0.25193,0.214602,1.244127,
+ 0,1,0,0,0.214602,1.496057,
+ 0,1,0,-0.30855,0.214602,1.317916,
+ 0,1,0,-0.344143,0.214602,1.403844,
+ 0,1,0,0,0.214602,1.496057,
+ 0,1,0,-0.344143,0.214602,1.403844,
+ 0,1,0,-0.356283,0.214602,1.496057,
+ 0,0.081483,0.996675,0,0.214602,1.496057,
+ 0,0.162423,0.986721,-0.356283,0.214602,1.496057,
+ 0,0.023241,0.99973,0.356283,0.214602,1.496057,
+ 0,1,0,0.356283,0.214602,1.496057,
+ 0,1,0,-0.356283,0.214602,1.496057,
+ 0,1,0,0.344143,0.214602,1.58827,
+ 0,1,0,0.344143,0.214602,1.58827,
+ 0,1,0,-0.356283,0.214602,1.496057,
+ 0,1,0,-0.344143,0.214602,1.58827,
+ 0,1,0,0.344143,0.214602,1.58827,
+ 0,1,0,-0.344143,0.214602,1.58827,
+ 0,1,0,-0.30855,0.214602,1.674199,
+ 0,1,0,0.344143,0.214602,1.58827,
+ 0,1,0,-0.30855,0.214602,1.674199,
+ 0,1,0,0.30855,0.214602,1.674199,
+ 0,1,0,0.30855,0.214602,1.674199,
+ 0,1,0,-0.30855,0.214602,1.674199,
+ 0,1,0,-0.25193,0.214602,1.747987,
+ 0,1,0,0.30855,0.214602,1.674199,
+ 0,1,0,-0.25193,0.214602,1.747987,
+ 0,1,0,0.25193,0.214602,1.747987,
+ 0,1,0,0.25193,0.214602,1.747987,
+ 0,1,0,-0.25193,0.214602,1.747987,
+ 0,1,0,-0.178141,0.214602,1.804607,
+ 0,1,0,0.25193,0.214602,1.747987,
+ 0,1,0,-0.178141,0.214602,1.804607,
+ 0,1,0,0.178141,0.214602,1.804607,
+ 0,1,0,0.178141,0.214602,1.804607,
+ 0,1,0,-0.178141,0.214602,1.804607,
+ 0,1,0,-0.092213,0.214602,1.8402,
+ 0,1,0,0.178141,0.214602,1.804607,
+ 0,1,0,-0.092213,0.214602,1.8402,
+ 0,1,0,0.092213,0.214602,1.8402,
+ 0,1,0,0.092213,0.214602,1.8402,
+ 0,1,0,-0.092213,0.214602,1.8402,
+ 0,1,0,0,0.214602,1.85234,
+ -0.707107,0,0.707107,-0.25193,0,1.244127,
+ -0.707107,0,0.707107,-0.391599,0.104929,1.104458,
+ -0.707107,0,0.707107,-0.40435,0,1.091707,
+ -0.707107,0,0.707107,-0.391599,0.104929,1.104458,
+ -0.707107,0,0.707107,-0.25193,0,1.244127,
+ -0.707107,0,0.707107,-0.353826,0.204282,1.142231,
+ -0.707107,0,0.707107,-0.353826,0.204282,1.142231,
+ -0.707107,0,0.707107,-0.25193,0,1.244127,
+ -0.707107,0,0.707107,-0.292513,0.292513,1.203544,
+ -0.707107,0,0.707107,-0.292513,0.292513,1.203544,
+ -0.707107,0,0.707107,-0.25193,0,1.244127,
+ -0.707107,0,0.707107,-0.25193,0.214602,1.244127,
+ -0.707107,0,0.707107,-0.25193,0.214602,1.244127,
+ -0.707107,0,0.707107,-0.210267,0.364193,1.28579,
+ -0.707107,0,0.707107,-0.292513,0.292513,1.203544,
+ -0.707107,0,0.707107,-0.210267,0.364193,1.28579,
+ -0.707107,0,0.707107,-0.25193,0.214602,1.244127,
+ -0.707107,0,0.707107,0,0.214602,1.496057,
+ -0.707107,0,0.707107,-0.210267,0.364193,1.28579,
+ -0.707107,0,0.707107,0,0.214602,1.496057,
+ -0.707107,0,0.707107,-0.110985,0.414201,1.385072,
+ -0.707107,0,0.707107,-0.110985,0.414201,1.385072,
+ -0.707107,0,0.707107,0,0.214602,1.496057,
+ -0.707107,0,0.707107,0,0.438068,1.496057,
+ 0,0.023241,0.99973,0.356283,0.214602,1.496057,
+ 0,0,1,0,0.438068,1.496057,
+ 0,0.081483,0.996675,0,0.214602,1.496057,
+ 0,0,1,0,0.438068,1.496057,
+ 0,0.023241,0.99973,0.356283,0.214602,1.496057,
+ 0,0,1,0.11338,0.423141,1.496057,
+ 0,0,1,0.11338,0.423141,1.496057,
+ 0,0.023241,0.99973,0.356283,0.214602,1.496057,
+ 0,0,1,0.219034,0.379378,1.496057,
+ 0,0,1,0.219034,0.379378,1.496057,
+ 0,0.023241,0.99973,0.356283,0.214602,1.496057,
+ 0,0,1,0.309761,0.309761,1.496057,
+ 0,0,1,0.309761,0.309761,1.496057,
+ 0,0.023241,0.99973,0.356283,0.214602,1.496057,
+ 0,0,1,0.379378,0.219034,1.496057,
+ 0,0,1,0.379378,0.219034,1.496057,
+ 0,0.023241,0.99973,0.356283,0.214602,1.496057,
+ 0,0,1,0.356283,0,1.496057,
+ 0,0,1,0.379378,0.219034,1.496057,
+ 0,0,1,0.356283,0,1.496057,
+ 0,0,1,0.438068,0,1.496057,
+ 0,0,1,0.379378,0.219034,1.496057,
+ 0,0,1,0.438068,0,1.496057,
+ 0,0,1,0.423141,0.11338,1.496057,
+ 0.041601,0.996196,-0.076566,0,0.438068,1.496057,
+ 0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+ -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+ 0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+ 0.041601,0.996196,-0.076566,0,0.438068,1.496057,
+ 0.258058,0.963085,-0.076633,0.11338,0.423141,1.496057,
+ 0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+ 0.49853,0.863479,-0.076633,0.219034,0.379378,1.496057,
+ 0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+ 0.49853,0.863479,-0.076633,0.219034,0.379378,1.496057,
+ 0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+ 0.258058,0.963085,-0.076633,0.11338,0.423141,1.496057,
+ 0.49853,0.863479,-0.076633,0.219034,0.379378,1.496057,
+ 0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+ 0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+ 0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+ 0.49853,0.863479,-0.076633,0.219034,0.379378,1.496057,
+ 0.705027,0.705027,-0.076633,0.309761,0.309761,1.496057,
+ 0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+ 0.840797,0.53591,-0.07656,0.379378,0.219034,1.496057,
+ 0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+ 0.840797,0.53591,-0.07656,0.379378,0.219034,1.496057,
+ 0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+ 0.705027,0.705027,-0.076633,0.309761,0.309761,1.496057,
+ 0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+ 0.988579,0.130149,-0.075981,0.438068,0,1.496057,
+ 0.99144,0.130526,0.00323,0.384098,0,0.793862,
+ 0.988579,0.130149,-0.075981,0.438068,0,1.496057,
+ 0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+ 0.950851,0.300035,-0.07656,0.423141,0.11338,1.496057,
+ 0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+ 0.950851,0.300035,-0.07656,0.423141,0.11338,1.496057,
+ 0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+ 0.950851,0.300035,-0.07656,0.423141,0.11338,1.496057,
+ 0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+ 0.840797,0.53591,-0.07656,0.379378,0.219034,1.496057,
+ -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+ -0.9659,0.258812,0.007352,-0.37101,0.099412,0.793862,
+ -0.964063,0.256638,-0.068694,-0.391599,0.104929,1.104458,
+ -0.843132,0.53305,-0.070611,-0.353826,0.204282,1.142231,
+ -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+ -0.964063,0.256638,-0.068694,-0.391599,0.104929,1.104458,
+ -0.676924,0.732471,-0.072528,-0.292513,0.292513,1.203544,
+ -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+ -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+ -0.464387,0.882512,-0.074281,-0.210267,0.364193,1.28579,
+ -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+ -0.676924,0.732471,-0.072528,-0.292513,0.292513,1.203544,
+ -0.219928,0.972573,-0.075722,-0.110985,0.414201,1.385072,
+ -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+ -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+ 0.041601,0.996196,-0.076566,0,0.438068,1.496057,
+ -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+ -0.219928,0.972573,-0.075722,-0.110985,0.414201,1.385072,
+ -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+ -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+ -0.843132,0.53305,-0.070611,-0.353826,0.204282,1.142231,
+ -0.676924,0.732471,-0.072528,-0.292513,0.292513,1.203544,
+ -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+ -0.843132,0.53305,-0.070611,-0.353826,0.204282,1.142231,
+ -0.964063,0.256638,-0.068694,-0.391599,0.104929,1.104458,
+ -0.991477,0.130067,0.007441,-0.384098,0,0.793862,
+ -0.989436,0.128411,-0.067277,-0.40435,0,1.091707,
+ -0.964063,0.256638,-0.068694,-0.391599,0.104929,1.104458,
+ -0.9659,0.258812,0.007352,-0.37101,0.099412,0.793862,
+ -0.991477,0.130067,0.007441,-0.384098,0,0.793862,
+ -0.464387,0.882512,-0.074281,-0.210267,0.364193,1.28579,
+ -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+ -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+ -0.219928,0.972573,-0.075722,-0.110985,0.414201,1.385072,
+ -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+ -0.464387,0.882512,-0.074281,-0.210267,0.364193,1.28579,
+ -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+ -0.840359,0.535631,0.083047,-0.389987,0.225159,0,
+ -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+ -0.840359,0.535631,0.083047,-0.389987,0.225159,0,
+ -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+ -0.673093,0.73488,0.083047,-0.318423,0.318423,0,
+ -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+ 0.257923,0.962583,0.083127,0.116551,0.434974,0,
+ -0.043691,0.995587,0.083047,0,0.450318,0,
+ 0.257923,0.962583,0.083127,0.116551,0.434974,0,
+ -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+ 0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+ 0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+ 0.673093,0.73488,0.083047,0.318423,0.318423,0,
+ 0.498269,0.863028,0.083127,0.225159,0.389987,0,
+ 0.673093,0.73488,0.083047,0.318423,0.318423,0,
+ 0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+ 0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+ -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+ -0.962583,0.257923,0.083127,-0.434974,0.116551,0,
+ -0.9659,0.258812,0.007352,-0.37101,0.099412,0.793862,
+ -0.962583,0.257923,0.083127,-0.434974,0.116551,0,
+ -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+ -0.840359,0.535631,0.083047,-0.389987,0.225159,0,
+ 0.988072,0.130082,0.08242,0.450318,0,0,
+ 0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+ 0.99144,0.130526,0.00323,0.384098,0,0.793862,
+ 0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+ 0.988072,0.130082,0.08242,0.450318,0,0,
+ 0.950356,0.299879,0.083047,0.434974,0.116551,0,
+ -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+ -0.043691,0.995587,0.083047,0,0.450318,0,
+ -0.257923,0.962583,0.083127,-0.116551,0.434974,0,
+ -0.043691,0.995587,0.083047,0,0.450318,0,
+ -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+ -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+ -0.459957,0.884049,0.083047,-0.225159,0.389987,0,
+ -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+ -0.257923,0.962583,0.083127,-0.116551,0.434974,0,
+ -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+ -0.459957,0.884049,0.083047,-0.225159,0.389987,0,
+ -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+ 0.257923,0.962583,0.083127,0.116551,0.434974,0,
+ 0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+ 0.498269,0.863028,0.083127,0.225159,0.389987,0,
+ 0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+ 0.257923,0.962583,0.083127,0.116551,0.434974,0,
+ 0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+ 0.950356,0.299879,0.083047,0.434974,0.116551,0,
+ 0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+ 0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+ 0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+ 0.950356,0.299879,0.083047,0.434974,0.116551,0,
+ 0.840359,0.535631,0.083047,0.389987,0.225159,0,
+ -0.673093,0.73488,0.083047,-0.318423,0.318423,0,
+ -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+ -0.459957,0.884049,0.083047,-0.225159,0.389987,0,
+ -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+ -0.673093,0.73488,0.083047,-0.318423,0.318423,0,
+ -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+ -0.991477,0.130067,0.007441,-0.384098,0,0.793862,
+ -0.962583,0.257923,0.083127,-0.434974,0.116551,0,
+ -0.988072,0.130082,0.08242,-0.450318,0,0,
+ -0.962583,0.257923,0.083127,-0.434974,0.116551,0,
+ -0.991477,0.130067,0.007441,-0.384098,0,0.793862,
+ -0.9659,0.258812,0.007352,-0.37101,0.099412,0.793862,
+ 0.840359,0.535631,0.083047,0.389987,0.225159,0,
+ 0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+ 0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+ 0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+ 0.840359,0.535631,0.083047,0.389987,0.225159,0,
+ 0.673093,0.73488,0.083047,0.318423,0.318423,0,
+ 0.30062,0.039577,-0.952922,0.092213,0,-0.344143,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ 0.271764,0.083332,-0.958749,0.089071,0.023866,-0.344143,
+ 0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+ 0.30062,0.039577,-0.952922,0.092213,0,-0.344143,
+ 0.271764,0.083332,-0.958749,0.089071,0.023866,-0.344143,
+ 0.30062,0.039577,-0.952922,0.092213,0,-0.344143,
+ 0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+ 0.536052,0.070573,-0.84123,0.178141,0,-0.30855,
+ 0.668799,0.16246,-0.725476,0.243346,0.065204,-0.25193,
+ 0.536052,0.070573,-0.84123,0.178141,0,-0.30855,
+ 0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+ 0.536052,0.070573,-0.84123,0.178141,0,-0.30855,
+ 0.668799,0.16246,-0.725476,0.243346,0.065204,-0.25193,
+ 0.73389,0.096619,-0.672361,0.25193,0,-0.25193,
+ 0.73389,0.096619,-0.672361,0.25193,0,-0.25193,
+ 0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+ 0.860389,0.113272,-0.496891,0.30855,0,-0.178141,
+ 0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+ 0.73389,0.096619,-0.672361,0.25193,0,-0.25193,
+ 0.668799,0.16246,-0.725476,0.243346,0.065204,-0.25193,
+ 0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+ 0.958191,0.126148,-0.256821,0.344143,0,-0.092213,
+ 0.860389,0.113272,-0.496891,0.30855,0,-0.178141,
+ 0.958191,0.126148,-0.256821,0.344143,0,-0.092213,
+ 0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+ 0.919462,0.271766,-0.284135,0.332416,0.089071,-0.092213,
+ 0.958191,0.126148,-0.256821,0.344143,0,-0.092213,
+ 0.957662,0.256605,-0.130526,0.344143,0.092213,0,
+ 0.983106,0.129428,-0.129428,0.356283,0,0,
+ 0.957662,0.256605,-0.130526,0.344143,0.092213,0,
+ 0.958191,0.126148,-0.256821,0.344143,0,-0.092213,
+ 0.919462,0.271766,-0.284135,0.332416,0.089071,-0.092213,
+ 0.271764,0.083332,-0.958749,0.089071,0.023866,-0.344143,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ 0.240936,0.15083,-0.958749,0.079859,0.046106,-0.344143,
+ 0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+ 0.271764,0.083332,-0.958749,0.089071,0.023866,-0.344143,
+ 0.240936,0.15083,-0.958749,0.079859,0.046106,-0.344143,
+ 0.271764,0.083332,-0.958749,0.089071,0.023866,-0.344143,
+ 0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+ 0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+ 0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+ 0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+ 0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+ 0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+ 0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+ 0.668799,0.16246,-0.725476,0.243346,0.065204,-0.25193,
+ 0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+ 0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+ 0.668799,0.16246,-0.725476,0.243346,0.065204,-0.25193,
+ 0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+ 0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+ 0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+ 0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+ 0.919462,0.271766,-0.284135,0.332416,0.089071,-0.092213,
+ 0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+ 0.919462,0.271766,-0.284135,0.332416,0.089071,-0.092213,
+ 0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+ 0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+ 0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+ 0.957662,0.256605,-0.130526,0.344143,0.092213,0,
+ 0.919462,0.271766,-0.284135,0.332416,0.089071,-0.092213,
+ 0.957662,0.256605,-0.130526,0.344143,0.092213,0,
+ 0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+ 0.836071,0.532898,-0.130403,0.30855,0.178141,0,
+ 0.240936,0.15083,-0.958749,0.079859,0.046106,-0.344143,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ 0.193688,0.208049,-0.958749,0.065204,0.065204,-0.344143,
+ 0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+ 0.240936,0.15083,-0.958749,0.079859,0.046106,-0.344143,
+ 0.193688,0.208049,-0.958749,0.065204,0.065204,-0.344143,
+ 0.240936,0.15083,-0.958749,0.079859,0.046106,-0.344143,
+ 0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+ 0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+ 0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+ 0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+ 0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+ 0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+ 0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+ 0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+ 0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+ 0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+ 0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+ 0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+ 0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+ 0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+ 0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+ 0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+ 0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+ 0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+ 0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+ 0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+ 0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+ 0.836071,0.532898,-0.130403,0.30855,0.178141,0,
+ 0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+ 0.836071,0.532898,-0.130403,0.30855,0.178141,0,
+ 0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+ 0.701057,0.701057,-0.130526,0.25193,0.25193,0,
+ 0.193688,0.208049,-0.958749,0.065204,0.065204,-0.344143,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ 0.133242,0.25109,-0.958749,0.046106,0.079859,-0.344143,
+ 0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+ 0.193688,0.208049,-0.958749,0.065204,0.065204,-0.344143,
+ 0.133242,0.25109,-0.958749,0.046106,0.079859,-0.344143,
+ 0.193688,0.208049,-0.958749,0.065204,0.065204,-0.344143,
+ 0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+ 0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+ 0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+ 0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+ 0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+ 0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+ 0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+ 0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+ 0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+ 0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+ 0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+ 0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+ 0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+ 0.418063,0.77311,-0.476995,0.154275,0.267212,-0.178141,
+ 0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+ 0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+ 0.418063,0.77311,-0.476995,0.154275,0.267212,-0.178141,
+ 0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+ 0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+ 0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+ 0.532898,0.836071,-0.130403,0.178141,0.30855,0,
+ 0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+ 0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+ 0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+ 0.532898,0.836071,-0.130403,0.178141,0.30855,0,
+ 0.701057,0.701057,-0.130526,0.25193,0.25193,0,
+ 0.133242,0.25109,-0.958749,0.046106,0.079859,-0.344143,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ 0.063714,0.27702,-0.958749,0.023866,0.089071,-0.344143,
+ 0.133251,0.458018,-0.878899,0.046106,0.172071,-0.30855,
+ 0.133242,0.25109,-0.958749,0.046106,0.079859,-0.344143,
+ 0.063714,0.27702,-0.958749,0.023866,0.089071,-0.344143,
+ 0.133242,0.25109,-0.958749,0.046106,0.079859,-0.344143,
+ 0.133251,0.458018,-0.878899,0.046106,0.172071,-0.30855,
+ 0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+ 0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+ 0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+ 0.133251,0.458018,-0.878899,0.046106,0.172071,-0.30855,
+ 0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+ 0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+ 0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+ 0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+ 0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+ 0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+ 0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+ 0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+ 0.418063,0.77311,-0.476995,0.154275,0.267212,-0.178141,
+ 0.271766,0.919462,-0.284135,0.089071,0.332416,-0.092213,
+ 0.418063,0.77311,-0.476995,0.154275,0.267212,-0.178141,
+ 0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+ 0.418063,0.77311,-0.476995,0.154275,0.267212,-0.178141,
+ 0.271766,0.919462,-0.284135,0.089071,0.332416,-0.092213,
+ 0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+ 0.256605,0.957662,-0.130526,0.092213,0.344143,0,
+ 0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+ 0.271766,0.919462,-0.284135,0.089071,0.332416,-0.092213,
+ 0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+ 0.256605,0.957662,-0.130526,0.092213,0.344143,0,
+ 0.532898,0.836071,-0.130403,0.178141,0.30855,0,
+ 0.063714,0.27702,-0.958749,0.023866,0.089071,-0.344143,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ 0,0.258748,-0.965945,0,0.092213,-0.344143,
+ 0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+ 0.063714,0.27702,-0.958749,0.023866,0.089071,-0.344143,
+ 0,0.258748,-0.965945,0,0.092213,-0.344143,
+ 0.063714,0.27702,-0.958749,0.023866,0.089071,-0.344143,
+ 0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+ 0.133251,0.458018,-0.878899,0.046106,0.172071,-0.30855,
+ 0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+ 0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+ 0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+ 0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+ 0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+ 0.133251,0.458018,-0.878899,0.046106,0.172071,-0.30855,
+ 0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+ 0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+ 0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+ 0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+ 0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+ -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+ 0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+ 0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+ -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+ 0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+ 0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+ 0.271766,0.919462,-0.284135,0.089071,0.332416,-0.092213,
+ 0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+ 0.256605,0.957662,-0.130526,0.092213,0.344143,0,
+ 0.271766,0.919462,-0.284135,0.089071,0.332416,-0.092213,
+ 0.256605,0.957662,-0.130526,0.092213,0.344143,0,
+ 0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+ -0.043468,0.990508,-0.130403,0,0.356283,0,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ -0.063714,0.27702,-0.958749,-0.023866,0.089071,-0.344143,
+ 0,0.258748,-0.965945,0,0.092213,-0.344143,
+ 0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+ -0.063714,0.27702,-0.958749,-0.023866,0.089071,-0.344143,
+ -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+ -0.063714,0.27702,-0.958749,-0.023866,0.089071,-0.344143,
+ 0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+ 0,0.258748,-0.965945,0,0.092213,-0.344143,
+ 0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+ -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+ -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+ -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+ 0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+ 0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+ -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+ -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+ 0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+ -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+ -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+ -0.224128,0.836455,-0.500109,-0.079859,0.298036,-0.178141,
+ -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+ -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+ -0.224128,0.836455,-0.500109,-0.079859,0.298036,-0.178141,
+ -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+ -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+ 0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+ -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+ -0.043468,0.990508,-0.130403,0,0.356283,0,
+ 0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+ -0.043468,0.990508,-0.130403,0,0.356283,0,
+ -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+ -0.256605,0.957662,-0.130526,-0.092213,0.344143,0,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ -0.133242,0.25109,-0.958749,-0.046106,0.079859,-0.344143,
+ -0.063714,0.27702,-0.958749,-0.023866,0.089071,-0.344143,
+ -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+ -0.133242,0.25109,-0.958749,-0.046106,0.079859,-0.344143,
+ -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+ -0.133242,0.25109,-0.958749,-0.046106,0.079859,-0.344143,
+ -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+ -0.063714,0.27702,-0.958749,-0.023866,0.089071,-0.344143,
+ -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+ -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+ -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+ -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+ -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+ -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+ -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+ -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+ -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+ -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+ -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+ -0.224128,0.836455,-0.500109,-0.079859,0.298036,-0.178141,
+ -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+ -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+ -0.224128,0.836455,-0.500109,-0.079859,0.298036,-0.178141,
+ -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+ -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+ -0.482954,0.8365,-0.258889,-0.172071,0.298036,-0.092213,
+ -0.495722,0.858616,-0.130526,-0.178141,0.30855,0,
+ -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+ -0.482954,0.8365,-0.258889,-0.172071,0.298036,-0.092213,
+ -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+ -0.495722,0.858616,-0.130526,-0.178141,0.30855,0,
+ -0.256605,0.957662,-0.130526,-0.092213,0.344143,0,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ -0.193688,0.208049,-0.958749,-0.065204,0.065204,-0.344143,
+ -0.133242,0.25109,-0.958749,-0.046106,0.079859,-0.344143,
+ -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+ -0.193688,0.208049,-0.958749,-0.065204,0.065204,-0.344143,
+ -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+ -0.193688,0.208049,-0.958749,-0.065204,0.065204,-0.344143,
+ -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+ -0.133242,0.25109,-0.958749,-0.046106,0.079859,-0.344143,
+ -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+ -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+ -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+ -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+ -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+ -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+ -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+ -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+ -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+ -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+ -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+ -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+ -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+ -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+ -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+ -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+ -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+ -0.482954,0.8365,-0.258889,-0.172071,0.298036,-0.092213,
+ -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+ -0.495722,0.858616,-0.130526,-0.178141,0.30855,0,
+ -0.482954,0.8365,-0.258889,-0.172071,0.298036,-0.092213,
+ -0.495722,0.858616,-0.130526,-0.178141,0.30855,0,
+ -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+ -0.701057,0.701057,-0.130526,-0.25193,0.25193,0,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ -0.240936,0.15083,-0.958749,-0.079859,0.046106,-0.344143,
+ -0.193688,0.208049,-0.958749,-0.065204,0.065204,-0.344143,
+ -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+ -0.240936,0.15083,-0.958749,-0.079859,0.046106,-0.344143,
+ -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+ -0.240936,0.15083,-0.958749,-0.079859,0.046106,-0.344143,
+ -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+ -0.193688,0.208049,-0.958749,-0.065204,0.065204,-0.344143,
+ -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+ -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+ -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+ -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+ -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+ -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+ -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+ -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+ -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+ -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+ -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+ -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+ -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+ -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+ -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+ -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+ -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+ -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+ -0.836071,0.532898,-0.130403,-0.30855,0.178141,0,
+ -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+ -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+ -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+ -0.836071,0.532898,-0.130403,-0.30855,0.178141,0,
+ -0.701057,0.701057,-0.130526,-0.25193,0.25193,0,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ -0.271764,0.083332,-0.958749,-0.089071,0.023866,-0.344143,
+ -0.240936,0.15083,-0.958749,-0.079859,0.046106,-0.344143,
+ -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+ -0.271764,0.083332,-0.958749,-0.089071,0.023866,-0.344143,
+ -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+ -0.271764,0.083332,-0.958749,-0.089071,0.023866,-0.344143,
+ -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+ -0.240936,0.15083,-0.958749,-0.079859,0.046106,-0.344143,
+ -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+ -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+ -0.668799,0.16246,-0.725476,-0.243346,0.065204,-0.25193,
+ -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+ -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+ -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+ -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+ -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+ -0.668799,0.16246,-0.725476,-0.243346,0.065204,-0.25193,
+ -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+ -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+ -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+ -0.919462,0.271766,-0.284135,-0.332416,0.089071,-0.092213,
+ -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+ -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+ -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+ -0.919462,0.271766,-0.284135,-0.332416,0.089071,-0.092213,
+ -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+ -0.957662,0.256605,-0.130526,-0.344143,0.092213,0,
+ -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+ -0.919462,0.271766,-0.284135,-0.332416,0.089071,-0.092213,
+ -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+ -0.957662,0.256605,-0.130526,-0.344143,0.092213,0,
+ -0.836071,0.532898,-0.130403,-0.30855,0.178141,0,
+ 0,0.084475,-0.996426,0,0,-0.356283,
+ -0.30062,0.039577,-0.952922,-0.092213,0,-0.344143,
+ -0.271764,0.083332,-0.958749,-0.089071,0.023866,-0.344143,
+ -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+ -0.30062,0.039577,-0.952922,-0.092213,0,-0.344143,
+ -0.536052,0.070573,-0.84123,-0.178141,0,-0.30855,
+ -0.30062,0.039577,-0.952922,-0.092213,0,-0.344143,
+ -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+ -0.271764,0.083332,-0.958749,-0.089071,0.023866,-0.344143,
+ -0.668799,0.16246,-0.725476,-0.243346,0.065204,-0.25193,
+ -0.536052,0.070573,-0.84123,-0.178141,0,-0.30855,
+ -0.73389,0.096619,-0.672361,-0.25193,0,-0.25193,
+ -0.536052,0.070573,-0.84123,-0.178141,0,-0.30855,
+ -0.668799,0.16246,-0.725476,-0.243346,0.065204,-0.25193,
+ -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+ -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+ -0.73389,0.096619,-0.672361,-0.25193,0,-0.25193,
+ -0.860389,0.113272,-0.496891,-0.30855,0,-0.178141,
+ -0.73389,0.096619,-0.672361,-0.25193,0,-0.25193,
+ -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+ -0.668799,0.16246,-0.725476,-0.243346,0.065204,-0.25193,
+ -0.958191,0.126148,-0.256821,-0.344143,0,-0.092213,
+ -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+ -0.860389,0.113272,-0.496891,-0.30855,0,-0.178141,
+ -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+ -0.958191,0.126148,-0.256821,-0.344143,0,-0.092213,
+ -0.919462,0.271766,-0.284135,-0.332416,0.089071,-0.092213,
+ -0.957662,0.256605,-0.130526,-0.344143,0.092213,0,
+ -0.958191,0.126148,-0.256821,-0.344143,0,-0.092213,
+ -0.983106,0.129428,-0.129428,-0.356283,0,0,
+ -0.958191,0.126148,-0.256821,-0.344143,0,-0.092213,
+ -0.957662,0.256605,-0.130526,-0.344143,0.092213,0,
+ -0.919462,0.271766,-0.284135,-0.332416,0.089071,-0.092213,
+ 0,0,-1,-0.434974,0.116551,0,
+ 0,0,-1,-0.356283,0,0,
+ 0,0,-1,-0.450318,0,0,
+ 0,0,-1,-0.356283,0,0,
+ 0,0,-1,-0.434974,0.116551,0,
+ 0,0,-1,-0.389987,0.225159,0,
+ 0,0,-1,-0.356283,0,0,
+ 0,0,-1,-0.389987,0.225159,0,
+ 0,0,-1,-0.318423,0.318423,0,
+ 0,0,-1,-0.356283,0,0,
+ 0,0,-1,-0.318423,0.318423,0,
+ 0,0,-1,-0.344143,0.092213,0,
+ 0,0,-1,-0.344143,0.092213,0,
+ 0,0,-1,-0.318423,0.318423,0,
+ 0,0,-1,-0.30855,0.178141,0,
+ 0,0,-1,-0.30855,0.178141,0,
+ 0,0,-1,-0.318423,0.318423,0,
+ 0,0,-1,-0.225159,0.389987,0,
+ 0,0,-1,-0.30855,0.178141,0,
+ 0,0,-1,-0.225159,0.389987,0,
+ 0,0,-1,-0.25193,0.25193,0,
+ 0,0,-1,-0.25193,0.25193,0,
+ 0,0,-1,-0.225159,0.389987,0,
+ 0,0,-1,-0.178141,0.30855,0,
+ 0,0,-1,-0.178141,0.30855,0,
+ 0,0,-1,-0.225159,0.389987,0,
+ 0,0,-1,-0.116551,0.434974,0,
+ 0,0,-1,-0.178141,0.30855,0,
+ 0,0,-1,-0.116551,0.434974,0,
+ 0,0,-1,-0.092213,0.344143,0,
+ 0,0,-1,-0.092213,0.344143,0,
+ 0,0,-1,-0.116551,0.434974,0,
+ 0,0,-1,0,0.450318,0,
+ 0,0,-1,-0.092213,0.344143,0,
+ 0,0,-1,0,0.450318,0,
+ 0,0,-1,0,0.356283,0,
+ 0,0,-1,0,0.356283,0,
+ 0,0,-1,0,0.450318,0,
+ 0,0,-1,0.116551,0.434974,0,
+ 0,0,-1,0,0.356283,0,
+ 0,0,-1,0.116551,0.434974,0,
+ 0,0,-1,0.092213,0.344143,0,
+ 0,0,-1,0.092213,0.344143,0,
+ 0,0,-1,0.116551,0.434974,0,
+ 0,0,-1,0.178141,0.30855,0,
+ 0,0,-1,0.178141,0.30855,0,
+ 0,0,-1,0.116551,0.434974,0,
+ 0,0,-1,0.225159,0.389987,0,
+ 0,0,-1,0.178141,0.30855,0,
+ 0,0,-1,0.225159,0.389987,0,
+ 0,0,-1,0.25193,0.25193,0,
+ 0,0,-1,0.25193,0.25193,0,
+ 0,0,-1,0.225159,0.389987,0,
+ 0,0,-1,0.318423,0.318423,0,
+ 0,0,-1,0.25193,0.25193,0,
+ 0,0,-1,0.318423,0.318423,0,
+ 0,0,-1,0.30855,0.178141,0,
+ 0,0,-1,0.30855,0.178141,0,
+ 0,0,-1,0.318423,0.318423,0,
+ 0,0,-1,0.344143,0.092213,0,
+ 0,0,-1,0.344143,0.092213,0,
+ 0,0,-1,0.318423,0.318423,0,
+ 0,0,-1,0.389987,0.225159,0,
+ 0,0,-1,0.344143,0.092213,0,
+ 0,0,-1,0.389987,0.225159,0,
+ 0,0,-1,0.356283,0,0,
+ 0,0,-1,0.356283,0,0,
+ 0,0,-1,0.389987,0.225159,0,
+ 0,0,-1,0.450318,0,0,
+ 0,0,-1,0.450318,0,0,
+ 0,0,-1,0.389987,0.225159,0,
+ 0,0,-1,0.434974,0.116551,0
+};
+static const struct gllist handsy_model_thumb_metacarpal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 795, handsy_model_thumb_metacarpal_data, 0
+};
+const struct gllist *handsy_model_thumb_metacarpal = &handsy_model_thumb_metacarpal_frame;
+
+static const float handsy_model_thumb_proximal_data[] = {
+ -0.936373,0.288163,0.20042,-0.353285,0.094662,0.353285,
+ -0.973563,0.117553,0.195847,-0.355438,0.071069,0.355438,
+ -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+ 0.518608,0.846422,0.120897,0.173828,0.301078,0.441663,
+ 0.661729,0.722474,0.200364,0.309761,0.309761,0,
+ 0.452191,0.869124,0.200364,0.219034,0.379378,0,
+ -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+ -0.375037,0.90542,0.198902,-0.131358,0.386837,0.131358,
+ -0.489842,0.848431,0.200549,-0.198696,0.344152,0.198696,
+ 0.826171,0.526588,0.200364,0.379378,0.219034,0,
+ 0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+ 0.934311,0.294816,0.200364,0.423141,0.11338,0,
+ -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+ -0.042953,0.978779,0.200364,0,0.438068,0,
+ -0.253561,0.946302,0.200549,-0.107675,0.40185,0.107675,
+ 0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+ 0.452191,0.869124,0.200364,0.219034,0.379378,0,
+ 0.211837,0.956545,0.200364,0.11338,0.423141,0,
+ -0.692741,0.692741,0.200549,-0.270592,0.270592,0.270592,
+ -0.777502,0.596598,0.198902,-0.291297,0.236707,0.291297,
+ -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+ -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+ -0.596598,0.777502,0.198902,-0.233181,0.30887,0.233181,
+ -0.692741,0.692741,0.200549,-0.270592,0.270592,0.270592,
+ -0.826171,0.526588,0.200364,-0.322249,0.18605,0.322249,
+ -0.90542,0.375037,0.198902,-0.331519,0.158753,0.331519,
+ -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+ 0.934311,0.294816,0.200364,0.423141,0.11338,0,
+ 0.965222,0.231799,0.120897,0.335809,0.08998,0.441663,
+ 0.971635,0.127918,0.198902,0.438068,0,0,
+ 0.661729,0.722474,0.200364,0.309761,0.309761,0,
+ 0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+ 0.826171,0.526588,0.200364,0.379378,0.219034,0,
+ -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+ 0.211837,0.956545,0.200364,0.11338,0.423141,0,
+ -0.042953,0.978779,0.200364,0,0.438068,0,
+ -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+ -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+ -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+ -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+ -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+ -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+ 0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+ 0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+ 0.518608,0.846422,0.120897,0.173828,0.301078,0.441663,
+ 0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+ 0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+ 0.232074,0.966532,-0.109355,0.08998,0.335809,0.768373,
+ 0.295926,0.937828,-0.181402,0.111086,0.414579,1.210037,
+ 0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+ 0.232074,0.966532,-0.109355,0.08998,0.335809,0.768373,
+ 0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+ 0.295926,0.937828,-0.181402,0.111086,0.414579,1.210037,
+ 0.52857,0.829281,-0.181402,0.214602,0.371702,1.210037,
+ -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+ -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+ -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+ -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+ -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+ -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+ -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+ -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+ -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+ -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+ -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+ 0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+ 0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+ 0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+ 0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+ 0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+ 0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+ 0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+ 0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+ 0.829281,0.52857,-0.181402,0.371702,0.214602,1.210037,
+ 0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+ 0.829281,0.52857,-0.181402,0.371702,0.214602,1.210037,
+ 0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+ 0.695353,0.695353,-0.181571,0.303493,0.303493,1.210037,
+ -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+ -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+ -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+ -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+ -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+ -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+ 0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+ 0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+ -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+ 0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+ 0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+ 0.232074,0.966532,-0.109355,0.08998,0.335809,0.768373,
+ 0.043115,0.982463,-0.181402,0,0.429204,1.210037,
+ 0.232074,0.966532,-0.109355,0.08998,0.335809,0.768373,
+ 0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+ 0.232074,0.966532,-0.109355,0.08998,0.335809,0.768373,
+ 0.043115,0.982463,-0.181402,0,0.429204,1.210037,
+ 0.295926,0.937828,-0.181402,0.111086,0.414579,1.210037,
+ -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+ -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+ -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+ -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+ -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+ -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+ 0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+ 0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+ 0.518608,0.846422,0.120897,0.173828,0.301078,0.441663,
+ 0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+ 0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+ 0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+ 0.52857,0.829281,-0.181402,0.214602,0.371702,1.210037,
+ 0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+ 0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+ 0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+ 0.52857,0.829281,-0.181402,0.214602,0.371702,1.210037,
+ 0.695353,0.695353,-0.181571,0.303493,0.303493,1.210037,
+ -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+ -0.991445,0.130526,0,-0.347655,0,0.467099,
+ -0.987385,0.129992,-0.090404,-0.347655,0,0.768373,
+ -0.991445,0.130526,0,-0.347655,0,0.467099,
+ -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+ -0.989366,0.130253,0.064723,-0.347655,0,0.441663,
+ -0.989366,0.130253,0.064723,-0.347655,0,0.441663,
+ -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+ -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+ 0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+ 0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+ 0.965222,0.231799,0.120897,0.335809,0.08998,0.441663,
+ 0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+ 0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+ 0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+ 0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+ 0.937828,0.295926,-0.181402,0.414579,0.111086,1.210037,
+ 0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+ 0.937828,0.295926,-0.181402,0.414579,0.111086,1.210037,
+ 0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+ 0.829281,0.52857,-0.181402,0.371702,0.214602,1.210037,
+ 0.989244,0.130236,0.066597,0.347655,0,0.441663,
+ 0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+ 0.987385,0.129992,-0.090404,0.347655,0,0.768373,
+ 0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+ 0.989244,0.130236,0.066597,0.347655,0,0.441663,
+ 0.965222,0.231799,0.120897,0.335809,0.08998,0.441663,
+ 0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+ 0.975239,0.128393,-0.180068,0.429204,0,1.210037,
+ 0.987385,0.129992,-0.090404,0.347655,0,0.768373,
+ 0.975239,0.128393,-0.180068,0.429204,0,1.210037,
+ 0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+ 0.937828,0.295926,-0.181402,0.414579,0.111086,1.210037,
+ 0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+ 0.965222,0.231799,0.120897,0.335809,0.08998,0.441663,
+ 0.934311,0.294816,0.200364,0.423141,0.11338,0,
+ 0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+ 0.211837,0.956545,0.200364,0.11338,0.423141,0,
+ -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+ -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+ -0.972735,0.128063,0.193353,-0.363243,0,0.363243,
+ -0.989366,0.130253,0.064723,-0.347655,0,0.441663,
+ -0.972735,0.128063,0.193353,-0.363243,0,0.363243,
+ -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+ -0.973563,0.117553,0.195847,-0.355438,0.071069,0.355438,
+ -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+ -0.826171,0.526588,0.200364,-0.322249,0.18605,0.322249,
+ -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+ -0.826171,0.526588,0.200364,-0.322249,0.18605,0.322249,
+ -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+ -0.777502,0.596598,0.198902,-0.295978,0.229044,0.295978,
+ -0.777502,0.596598,0.198902,-0.295978,0.229044,0.295978,
+ -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+ -0.777502,0.596598,0.198902,-0.291297,0.236707,0.291297,
+ -0.596598,0.777502,0.198902,-0.233181,0.30887,0.233181,
+ -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+ -0.489842,0.848431,0.200549,-0.198696,0.344152,0.198696,
+ -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+ -0.596598,0.777502,0.198902,-0.233181,0.30887,0.233181,
+ -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+ -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+ -0.936373,0.288163,0.20042,-0.353285,0.094662,0.353285,
+ -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+ -0.936373,0.288163,0.20042,-0.353285,0.094662,0.353285,
+ -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+ -0.90542,0.375037,0.198902,-0.331519,0.158753,0.331519,
+ -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+ -0.042953,0.978779,0.200364,0,0.438068,0,
+ -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+ 0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+ 0.518608,0.846422,0.120897,0.173828,0.301078,0.441663,
+ 0.452191,0.869124,0.200364,0.219034,0.379378,0,
+ 0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+ 0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+ 0.826171,0.526588,0.200364,0.379378,0.219034,0,
+ 0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+ 0.661729,0.722474,0.200364,0.309761,0.309761,0,
+ 0.518608,0.846422,0.120897,0.173828,0.301078,0.441663,
+ -0.375037,0.90542,0.198902,-0.131358,0.386837,0.131358,
+ -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+ -0.253561,0.946302,0.200549,-0.107675,0.40185,0.107675,
+ -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+ -0.375037,0.90542,0.198902,-0.131358,0.386837,0.131358,
+ -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+ 0.965222,0.231799,0.120897,0.335809,0.08998,0.441663,
+ 0.989244,0.130236,0.066597,0.347655,0,0.441663,
+ 0.971635,0.127918,0.198902,0.438068,0,0,
+ 0,0,-1,0,0.438068,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0,0.214602,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0,0.438068,0,
+ 0,0,-1,0.11338,0.423141,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0.11338,0.423141,0,
+ 0,0,-1,0.219034,0.379378,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0.219034,0.379378,0,
+ 0,0,-1,0.309761,0.309761,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0.309761,0.309761,0,
+ 0,0,-1,0.379378,0.219034,0,
+ 0,0,-1,0.356283,0.214602,0,
+ 0,0,-1,0.379378,0.219034,0,
+ 0,0,-1,0.356283,0,0,
+ 0,0,-1,0.356283,0,0,
+ 0,0,-1,0.379378,0.219034,0,
+ 0,0,-1,0.438068,0,0,
+ 0,0,-1,0.438068,0,0,
+ 0,0,-1,0.379378,0.219034,0,
+ 0,0,-1,0.423141,0.11338,0,
+ -0.707107,0,-0.707107,-0.355438,0.071069,0.355438,
+ -0.707107,0,-0.707107,-0.25193,0,0.25193,
+ -0.707107,0,-0.707107,-0.363243,0,0.363243,
+ -0.707107,0,-0.707107,-0.25193,0,0.25193,
+ -0.707107,0,-0.707107,-0.355438,0.071069,0.355438,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.355438,0.071069,0.355438,
+ -0.707107,0,-0.707107,-0.353285,0.094662,0.353285,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.353285,0.094662,0.353285,
+ -0.707107,0,-0.707107,-0.331519,0.158753,0.331519,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.331519,0.158753,0.331519,
+ -0.707107,0,-0.707107,-0.322249,0.18605,0.322249,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.322249,0.18605,0.322249,
+ -0.707107,0,-0.707107,-0.295978,0.229044,0.295978,
+ -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+ -0.707107,0,-0.707107,-0.295978,0.229044,0.295978,
+ -0.707107,0,-0.707107,0,0.214602,0,
+ -0.707107,0,-0.707107,0,0.214602,0,
+ -0.707107,0,-0.707107,-0.295978,0.229044,0.295978,
+ -0.707107,0,-0.707107,0,0.438068,0,
+ -0.707107,0,-0.707107,0,0.438068,0,
+ -0.707107,0,-0.707107,-0.295978,0.229044,0.295978,
+ -0.707107,0,-0.707107,-0.291297,0.236707,0.291297,
+ -0.707107,0,-0.707107,0,0.438068,0,
+ -0.707107,0,-0.707107,-0.291297,0.236707,0.291297,
+ -0.707107,0,-0.707107,-0.270592,0.270592,0.270592,
+ -0.707107,0,-0.707107,0,0.438068,0,
+ -0.707107,0,-0.707107,-0.270592,0.270592,0.270592,
+ -0.707107,0,-0.707107,-0.233181,0.30887,0.233181,
+ -0.707107,0,-0.707107,0,0.438068,0,
+ -0.707107,0,-0.707107,-0.233181,0.30887,0.233181,
+ -0.707107,0,-0.707107,-0.198696,0.344152,0.198696,
+ -0.707107,0,-0.707107,0,0.438068,0,
+ -0.707107,0,-0.707107,-0.198696,0.344152,0.198696,
+ -0.707107,0,-0.707107,-0.131358,0.386837,0.131358,
+ -0.707107,0,-0.707107,0,0.438068,0,
+ -0.707107,0,-0.707107,-0.131358,0.386837,0.131358,
+ -0.707107,0,-0.707107,-0.107675,0.40185,0.107675,
+ 0,1,0,-0.30855,0.214602,1.031895,
+ 0,1,0,0,0.214602,1.210037,
+ 0,1,0,-0.25193,0.214602,0.958107,
+ 0,1,0,0,0.214602,1.210037,
+ 0,1,0,-0.30855,0.214602,1.031895,
+ 0,1,0,-0.344143,0.214602,1.117824,
+ 0,1,0,0,0.214602,1.210037,
+ 0,1,0,-0.344143,0.214602,1.117824,
+ 0,1,0,-0.356283,0.214602,1.210037,
+ 0,1,0,0,0.214602,1.210037,
+ 0,1,0,-0.356283,0.214602,1.210037,
+ 0,1,0,-0.344143,0.214602,1.302249,
+ 0,1,0,0,0.214602,1.210037,
+ 0,1,0,0.344143,0.214602,1.302249,
+ 0,1,0,0.356283,0.214602,1.210037,
+ 0,1,0,0.344143,0.214602,1.302249,
+ 0,1,0,0,0.214602,1.210037,
+ 0,1,0,-0.344143,0.214602,1.302249,
+ 0,1,0,0.344143,0.214602,1.302249,
+ 0,1,0,-0.344143,0.214602,1.302249,
+ 0,1,0,-0.317592,0.214602,1.366349,
+ 0,1,0,0.344143,0.214602,1.302249,
+ 0,1,0,-0.317592,0.214602,1.366349,
+ 0,1,0,0.30855,0.214602,1.388178,
+ 0,1,0,0.30855,0.214602,1.388178,
+ 0,1,0,-0.317592,0.214602,1.366349,
+ 0,1,0,-0.30855,0.214602,1.388178,
+ 0,1,0,0.30855,0.214602,1.388178,
+ 0,1,0,-0.30855,0.214602,1.388178,
+ 0,1,0,-0.25193,0.214602,1.461967,
+ 0,1,0,0.30855,0.214602,1.388178,
+ 0,1,0,-0.25193,0.214602,1.461967,
+ 0,1,0,0.25193,0.214602,1.461967,
+ 0,1,0,0.25193,0.214602,1.461967,
+ 0,1,0,-0.25193,0.214602,1.461967,
+ 0,1,0,-0.178141,0.214602,1.518587,
+ 0,1,0,0.25193,0.214602,1.461967,
+ 0,1,0,-0.178141,0.214602,1.518587,
+ 0,1,0,0.178141,0.214602,1.518587,
+ 0,1,0,0.178141,0.214602,1.518587,
+ 0,1,0,-0.178141,0.214602,1.518587,
+ 0,1,0,-0.092213,0.214602,1.554179,
+ 0,1,0,0.178141,0.214602,1.518587,
+ 0,1,0,-0.092213,0.214602,1.554179,
+ 0,1,0,0.092213,0.214602,1.554179,
+ 0,1,0,0.092213,0.214602,1.554179,
+ 0,1,0,-0.092213,0.214602,1.554179,
+ 0,1,0,0,0.214602,1.566319,
+ 0.991445,0,0.130526,0.356283,0,1.210037,
+ 0.965926,0,0.258819,0.344143,0.214602,1.302249,
+ 0.965926,0,0.258819,0.344143,0,1.302249,
+ 0.965926,0,0.258819,0.344143,0.214602,1.302249,
+ 0.991445,0,0.130526,0.356283,0,1.210037,
+ 0.991445,0,0.130526,0.356283,0.214602,1.210037,
+ 0.965926,0,0.258819,0.344143,0.214602,1.302249,
+ 0.887114,0,0.461551,0.30855,0,1.388178,
+ 0.965926,0,0.258819,0.344143,0,1.302249,
+ 0.887114,0,0.461551,0.30855,0,1.388178,
+ 0.965926,0,0.258819,0.344143,0.214602,1.302249,
+ 0.843272,0,0.537487,0.30855,0.214602,1.388178,
+ 0.843272,0,0.537487,0.30855,0.214602,1.388178,
+ 0.707107,0,0.707107,0.25193,0,1.461967,
+ 0.887114,0,0.461551,0.30855,0,1.388178,
+ 0.707107,0,0.707107,0.25193,0,1.461967,
+ 0.843272,0,0.537487,0.30855,0.214602,1.388178,
+ 0.707107,0,0.707107,0.25193,0.214602,1.461967,
+ 0.707107,0,0.707107,0.25193,0,1.461967,
+ 0.537487,0,0.843272,0.178141,0.214602,1.518587,
+ 0.461551,0,0.887114,0.178141,0,1.518587,
+ 0.537487,0,0.843272,0.178141,0.214602,1.518587,
+ 0.707107,0,0.707107,0.25193,0,1.461967,
+ 0.707107,0,0.707107,0.25193,0.214602,1.461967,
+ 0.461551,0,0.887114,0.178141,0,1.518587,
+ 0.300918,0,0.95365,0.092213,0.214602,1.554179,
+ 0.216222,0,0.976344,0.092213,0,1.554179,
+ 0.300918,0,0.95365,0.092213,0.214602,1.554179,
+ 0.461551,0,0.887114,0.178141,0,1.518587,
+ 0.537487,0,0.843272,0.178141,0.214602,1.518587,
+ 0.216222,0,0.976344,0.092213,0,1.554179,
+ 0.043842,0,0.999038,0,0.214602,1.566319,
+ -0.043842,0,0.999038,0,0,1.566319,
+ 0.043842,0,0.999038,0,0.214602,1.566319,
+ 0.216222,0,0.976344,0.092213,0,1.554179,
+ 0.300918,0,0.95365,0.092213,0.214602,1.554179,
+ -0.043842,0,0.999038,0,0,1.566319,
+ -0.216222,0,0.976344,-0.092213,0.214602,1.554179,
+ -0.300918,0,0.95365,-0.092213,0,1.554179,
+ -0.216222,0,0.976344,-0.092213,0.214602,1.554179,
+ -0.043842,0,0.999038,0,0,1.566319,
+ 0.043842,0,0.999038,0,0.214602,1.566319,
+ -0.300918,0,0.95365,-0.092213,0,1.554179,
+ -0.461551,0,0.887114,-0.178141,0.214602,1.518587,
+ -0.555804,0,0.831313,-0.178141,0,1.518587,
+ -0.461551,0,0.887114,-0.178141,0.214602,1.518587,
+ -0.300918,0,0.95365,-0.092213,0,1.554179,
+ -0.216222,0,0.976344,-0.092213,0.214602,1.554179,
+ -0.555804,0,0.831313,-0.178141,0,1.518587,
+ -0.725474,0,0.68825,-0.25193,0.194957,1.461967,
+ -0.707107,0,0.707107,-0.25193,0,1.461967,
+ -0.725474,0,0.68825,-0.25193,0.194957,1.461967,
+ -0.555804,0,0.831313,-0.178141,0,1.518587,
+ -0.675426,0,0.737428,-0.25193,0.214602,1.461967,
+ -0.675426,0,0.737428,-0.25193,0.214602,1.461967,
+ -0.555804,0,0.831313,-0.178141,0,1.518587,
+ -0.461551,0,0.887114,-0.178141,0.214602,1.518587,
+ -0.725474,0,0.68825,-0.25193,0.194957,1.461967,
+ -0.843272,0,0.537487,-0.30855,0,1.388178,
+ -0.707107,0,0.707107,-0.25193,0,1.461967,
+ -0.843272,0,0.537487,-0.30855,0,1.388178,
+ -0.725474,0,0.68825,-0.25193,0.194957,1.461967,
+ -0.866025,0,0.5,-0.30855,0.214602,1.388178,
+ -0.866025,0,0.5,-0.30855,0.214602,1.388178,
+ -0.725474,0,0.68825,-0.25193,0.194957,1.461967,
+ -0.675426,0,0.737428,-0.25193,0.214602,1.461967,
+ -0.866025,0,0.5,-0.30855,0.214602,1.388178,
+ -0.92388,0,0.382683,-0.317592,0,1.366349,
+ -0.843272,0,0.537487,-0.30855,0,1.388178,
+ -0.92388,0,0.382683,-0.317592,0,1.366349,
+ -0.965926,0,0.258819,-0.344143,0.214602,1.302249,
+ -0.965926,0,0.258819,-0.344143,0,1.302249,
+ -0.965926,0,0.258819,-0.344143,0.214602,1.302249,
+ -0.92388,0,0.382683,-0.317592,0,1.366349,
+ -0.866025,0,0.5,-0.30855,0.214602,1.388178,
+ -0.645102,0.715851,0.26721,-0.344143,0.214602,1.302249,
+ -0.645102,0.715851,0.26721,-0.30855,0.214602,1.388178,
+ -0.645102,0.715851,0.26721,-0.317592,0.214602,1.366349,
+ -0.829281,0.52857,-0.181402,-0.320459,0.185017,0.889577,
+ -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+ -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+ -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+ -0.829281,0.52857,-0.181402,-0.320459,0.185017,0.889577,
+ -0.780385,0.598811,-0.180068,-0.293976,0.227495,0.916061,
+ -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+ -0.780385,0.598811,-0.180068,-0.293976,0.227495,0.916061,
+ -0.66422,0.725193,-0.181402,-0.268445,0.268445,0.941592,
+ -0.66422,0.725193,-0.181402,-0.268445,0.268445,0.941592,
+ -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+ -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+ -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+ -0.66422,0.725193,-0.181402,-0.268445,0.268445,0.941592,
+ -0.491689,0.85163,-0.181571,-0.196464,0.340286,1.013572,
+ -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+ -0.254517,0.94987,-0.181571,-0.10602,0.395671,1.104017,
+ -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+ -0.254517,0.94987,-0.181571,-0.10602,0.395671,1.104017,
+ -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+ -0.491689,0.85163,-0.181571,-0.196464,0.340286,1.013572,
+ -0.937828,0.295926,-0.181402,-0.351831,0.094273,0.858206,
+ -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+ -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+ -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+ -0.937828,0.295926,-0.181402,-0.351831,0.094273,0.858206,
+ -0.829281,0.52857,-0.181402,-0.320459,0.185017,0.889577,
+ -0.975239,0.128393,-0.180068,-0.362308,0,0.847729,
+ -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+ -0.987385,0.129992,-0.090404,-0.347655,0,0.768373,
+ -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+ -0.975239,0.128393,-0.180068,-0.362308,0,0.847729,
+ -0.937828,0.295926,-0.181402,-0.351831,0.094273,0.858206,
+ -0.254517,0.94987,-0.181571,-0.10602,0.395671,1.104017,
+ 0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+ -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+ 0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+ -0.254517,0.94987,-0.181571,-0.10602,0.395671,1.104017,
+ 0.043115,0.982463,-0.181402,0,0.429204,1.210037,
+ -0.965926,0,-0.258819,-0.344143,0.214602,1.117824,
+ -0.866025,0,-0.5,-0.30855,0,1.031895,
+ -0.965926,0,-0.258819,-0.344143,0,1.117824,
+ -0.866025,0,-0.5,-0.30855,0,1.031895,
+ -0.965926,0,-0.258819,-0.344143,0.214602,1.117824,
+ -0.843272,0,-0.537487,-0.30855,0.214602,1.031895,
+ -0.965926,0,0.258819,-0.344143,0.214602,1.302249,
+ -1,0,0,-0.356283,0,1.210037,
+ -0.965926,0,0.258819,-0.344143,0,1.302249,
+ -1,0,0,-0.356283,0,1.210037,
+ -0.965926,0,0.258819,-0.344143,0.214602,1.302249,
+ -1,0,0,-0.356283,0.214602,1.210037,
+ -1,0,0,-0.356283,0,1.210037,
+ -0.965926,0,-0.258819,-0.344143,0.214602,1.117824,
+ -0.965926,0,-0.258819,-0.344143,0,1.117824,
+ -0.965926,0,-0.258819,-0.344143,0.214602,1.117824,
+ -1,0,0,-0.356283,0,1.210037,
+ -1,0,0,-0.356283,0.214602,1.210037,
+ -0.866025,0,-0.5,-0.30855,0,1.031895,
+ -0.793353,0,-0.608761,-0.25193,0.194957,0.958107,
+ -0.793353,0,-0.608761,-0.25193,0,0.958107,
+ -0.793353,0,-0.608761,-0.25193,0.194957,0.958107,
+ -0.866025,0,-0.5,-0.30855,0,1.031895,
+ -0.843272,0,-0.537487,-0.30855,0.214602,1.031895,
+ -0.793353,0,-0.608761,-0.25193,0.194957,0.958107,
+ -0.843272,0,-0.537487,-0.30855,0.214602,1.031895,
+ -0.793353,0,-0.608761,-0.25193,0.214602,0.958107,
+ -0.707107,0,0.707107,0,0.429204,1.210037,
+ -0.707107,0,0.707107,-0.25193,0.214602,0.958107,
+ -0.707107,0,0.707107,0,0.214602,1.210037,
+ -0.707107,0,0.707107,-0.25193,0.214602,0.958107,
+ -0.707107,0,0.707107,0,0.429204,1.210037,
+ -0.707107,0,0.707107,-0.293976,0.227495,0.916061,
+ -0.707107,0,0.707107,-0.293976,0.227495,0.916061,
+ -0.707107,0,0.707107,0,0.429204,1.210037,
+ -0.707107,0,0.707107,-0.268445,0.268445,0.941592,
+ -0.707107,0,0.707107,-0.268445,0.268445,0.941592,
+ -0.707107,0,0.707107,0,0.429204,1.210037,
+ -0.707107,0,0.707107,-0.196464,0.340286,1.013572,
+ -0.707107,0,0.707107,-0.196464,0.340286,1.013572,
+ -0.707107,0,0.707107,0,0.429204,1.210037,
+ -0.707107,0,0.707107,-0.10602,0.395671,1.104017,
+ -0.707107,0,0.707107,-0.25193,0.194957,0.958107,
+ -0.707107,0,0.707107,-0.362308,0,0.847729,
+ -0.707107,0,0.707107,-0.25193,0,0.958107,
+ -0.707107,0,0.707107,-0.362308,0,0.847729,
+ -0.707107,0,0.707107,-0.25193,0.194957,0.958107,
+ -0.707107,0,0.707107,-0.351831,0.094273,0.858206,
+ -0.707107,0,0.707107,-0.351831,0.094273,0.858206,
+ -0.707107,0,0.707107,-0.25193,0.194957,0.958107,
+ -0.707107,0,0.707107,-0.320459,0.185017,0.889577,
+ -0.707107,0,0.707107,-0.320459,0.185017,0.889577,
+ -0.707107,0,0.707107,-0.25193,0.194957,0.958107,
+ -0.707107,0,0.707107,-0.293976,0.227495,0.916061,
+ -0.707107,0,0.707107,-0.293976,0.227495,0.916061,
+ -0.707107,0,0.707107,-0.25193,0.194957,0.958107,
+ -0.707107,0,0.707107,-0.25193,0.214602,0.958107,
+ 0,0,1,0.429204,0,1.210037,
+ 0,0,1,0.356283,0.214602,1.210037,
+ 0,0,1,0.356283,0,1.210037,
+ 0,0,1,0.356283,0.214602,1.210037,
+ 0,0,1,0.429204,0,1.210037,
+ 0,0,1,0.371702,0.214602,1.210037,
+ 0,0,1,0.371702,0.214602,1.210037,
+ 0,0,1,0.429204,0,1.210037,
+ 0,0,1,0.414579,0.111086,1.210037,
+ 0,0,1,0,0.214602,1.210037,
+ 0,0,1,0.111086,0.414579,1.210037,
+ 0,0,1,0,0.429204,1.210037,
+ 0,0,1,0.111086,0.414579,1.210037,
+ 0,0,1,0,0.214602,1.210037,
+ 0,0,1,0.356283,0.214602,1.210037,
+ 0,0,1,0.111086,0.414579,1.210037,
+ 0,0,1,0.356283,0.214602,1.210037,
+ 0,0,1,0.214602,0.371702,1.210037,
+ 0,0,1,0.214602,0.371702,1.210037,
+ 0,0,1,0.356283,0.214602,1.210037,
+ 0,0,1,0.303493,0.303493,1.210037,
+ 0,0,1,0.303493,0.303493,1.210037,
+ 0,0,1,0.356283,0.214602,1.210037,
+ 0,0,1,0.371702,0.214602,1.210037
+};
+static const struct gllist handsy_model_thumb_proximal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 513, handsy_model_thumb_proximal_data, 0
+};
+const struct gllist *handsy_model_thumb_proximal = &handsy_model_thumb_proximal_frame;
diff --git a/hacks/glx/hexstrut.c b/hacks/glx/hexstrut.c
index a547a76..ba76d86 100644
--- a/hacks/glx/hexstrut.c
+++ b/hacks/glx/hexstrut.c
@@ -450,7 +450,7 @@ draw_hexstrut (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glShadeModel(GL_SMOOTH);
@@ -496,6 +496,13 @@ ENTRYPOINT void
free_hexstrut (ModeInfo *mi)
{
hexstrut_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->colors) free (bp->colors);
while (bp->triangles)
{
triangle *t = bp->triangles->next;
diff --git a/hacks/glx/hilbert.c b/hacks/glx/hilbert.c
index dbb2ce6..98faa4b 100644
--- a/hacks/glx/hilbert.c
+++ b/hacks/glx/hilbert.c
@@ -21,7 +21,6 @@
"*geometry: 800x800\n" \
"*suppressRotationAnimation: True\n" \
-# define free_hilbert 0
# define release_hilbert 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -987,7 +986,7 @@ draw_hilbert (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glShadeModel(GL_SMOOTH);
@@ -1139,6 +1138,30 @@ draw_hilbert (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_hilbert (ModeInfo *mi)
+{
+ hilbert_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->rot2) free_rotator (bp->rot2);
+ if (bp->colors) free (bp->colors);
+ if (bp->caches)
+ for (i = 0; i < max_depth + 2; i++)
+ if (bp->caches[i])
+ {
+ free (bp->caches[i]->values);
+ free (bp->caches[i]);
+ }
+ /* #### free dlists */
+}
+
XSCREENSAVER_MODULE ("Hilbert", hilbert)
#endif /* USE_GL */
diff --git a/hacks/glx/hydrostat.c b/hacks/glx/hydrostat.c
index faf15a0..99bc6cd 100644
--- a/hacks/glx/hydrostat.c
+++ b/hacks/glx/hydrostat.c
@@ -754,7 +754,7 @@ draw_hydrostat (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -797,11 +797,21 @@ free_hydrostat (ModeInfo *mi)
{
hydrostat_configuration *bp = &bps[MI_SCREEN(mi)];
int i;
- if (!bp->squids)
- return;
- for (i = 0; i < MI_COUNT(mi); i++)
- free_squid (bp->squids[i]);
- free (bp->squids);
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+# ifdef USE_TRACKBALL
+ if (bp->trackball) gltrackball_free (bp->trackball);
+# endif
+ if (bp->squids)
+ {
+ for (i = 0; i < MI_COUNT(mi); i++)
+ free_squid (bp->squids[i]);
+ free (bp->squids);
+ }
+
+ if (glIsList(bp->head)) glDeleteLists(bp->head, 1);
}
XSCREENSAVER_MODULE ("Hydrostat", hydrostat)
diff --git a/hacks/glx/hypertorus.c b/hacks/glx/hypertorus.c
index 3ae6aad..df64923 100644
--- a/hacks/glx/hypertorus.c
+++ b/hacks/glx/hypertorus.c
@@ -89,7 +89,6 @@ static const char sccsid[] = "@(#)hypertorus.c 1.2 05/09/28 xlockmore";
"*showFPS: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_hypertorus 0
# define release_hypertorus 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
@@ -982,7 +981,7 @@ ENTRYPOINT void draw_hypertorus(ModeInfo *mi)
if (!hp->glx_context)
return;
- glXMakeCurrent(display,window,*(hp->glx_context));
+ glXMakeCurrent(display, window, *hp->glx_context);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
@@ -1006,11 +1005,20 @@ ENTRYPOINT void change_hypertorus(ModeInfo *mi)
if (!hp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(hp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *hp->glx_context);
init(mi);
}
#endif /* !STANDALONE */
+ENTRYPOINT void free_hypertorus(ModeInfo *mi)
+{
+ hypertorusstruct *hp = &hyper[MI_SCREEN(mi)];
+ if (!hp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *hp->glx_context);
+ gltrackball_free (hp->trackballs[0]);
+ gltrackball_free (hp->trackballs[1]);
+}
+
XSCREENSAVER_MODULE ("Hypertorus", hypertorus)
#endif /* USE_GL */
diff --git a/hacks/glx/hypnowheel.c b/hacks/glx/hypnowheel.c
index 0602e6e..76896da 100644
--- a/hacks/glx/hypnowheel.c
+++ b/hacks/glx/hypnowheel.c
@@ -24,7 +24,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_hypnowheel 0
# define release_hypnowheel 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -243,7 +242,7 @@ draw_hypnowheel (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -317,6 +316,22 @@ hypnowheel_handle_event (ModeInfo *mi, XEvent *event)
}
+ENTRYPOINT void
+free_hypnowheel (ModeInfo *mi)
+{
+ hypnowheel_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->colors) free (bp->colors);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->discs) {
+ for (i = 0; i < nlayers; i++)
+ if (bp->discs[i].rot) free_rotator (bp->discs[i].rot);
+ free (bp->discs);
+ }
+}
+
XSCREENSAVER_MODULE ("Hypnowheel", hypnowheel)
#endif /* USE_GL */
diff --git a/hacks/glx/jigglypuff.c b/hacks/glx/jigglypuff.c
index fea13fd..d67a14d 100644
--- a/hacks/glx/jigglypuff.c
+++ b/hacks/glx/jigglypuff.c
@@ -41,7 +41,6 @@
"*wireframe: False\n" \
"*suppressRotationAnimation: True\n" \
-# define free_jigglypuff 0
# define release_jigglypuff 0
# include "xlockmore.h"
#else
@@ -94,7 +93,14 @@ static int shininess;
static int random_parms;
+/* This is all the half-edge b-rep code (as well as basic geometry) */
typedef struct solid solid;
+typedef struct face face;
+typedef struct edge edge;
+typedef struct hedge hedge;
+typedef struct vertex vertex;
+typedef GLfloat coord;
+typedef coord vector[3];
typedef struct {
float stable_distance;
@@ -119,6 +125,13 @@ typedef struct {
float axis;
float speed;
+ face *faces;
+ edge *edges;
+ hedge *hedges;
+ vertex *vertices;
+
+ GLuint texid;
+
GLXContext *glx_context;
} jigglystruct;
@@ -203,14 +216,6 @@ static const GLfloat flowerbox_colors[4][4] = {
#endif
#endif /* 0 */
-/* This is all the half-edge b-rep code (as well as basic geometry) */
-typedef struct face face;
-typedef struct edge edge;
-typedef struct hedge hedge;
-typedef struct vertex vertex;
-typedef GLfloat coord;
-typedef coord vector[3];
-
struct solid {
face *faces;
edge *edges;
@@ -221,21 +226,21 @@ struct face {
solid *s;
hedge *start;
const GLfloat *color;
- face *next;
+ face *next, *next0;
};
struct edge {
solid *s;
hedge *left;
hedge *right;
- edge *next;
+ edge *next, *next0;
};
struct hedge {
face *f;
edge *e;
vertex *vtx;
- hedge *next;
+ hedge *next, *next0;
hedge *prev;
};
@@ -246,7 +251,7 @@ struct vertex {
vector n;
vector f;
vector vel;
- vertex *next;
+ vertex *next, *next0;
};
static inline void vector_init(vector v, coord x, coord y, coord z)
@@ -353,12 +358,14 @@ static inline hedge *partner(hedge *h) {
}
}
-static vertex *vertex_new(solid *s, vector v)
+static vertex *vertex_new(jigglystruct *js, solid *s, vector v)
{
vertex *vtx = (vertex*)malloc(sizeof(vertex));
if(!vtx)
return NULL;
+ vtx->next0 = js->vertices;
+ js->vertices = vtx;
vtx->s = s;
vtx->next = s->vertices;
s->vertices = vtx;
@@ -372,7 +379,7 @@ static vertex *vertex_new(solid *s, vector v)
* i.e. it is a helper for the split_* functions, which
* maintain the consistency of the solid.
*/
-static hedge *hedge_new(hedge *hafter, vertex *vtx)
+static hedge *hedge_new(jigglystruct *js, hedge *hafter, vertex *vtx)
{
hedge *h = (hedge*)malloc(sizeof(hedge));
@@ -380,6 +387,8 @@ static hedge *hedge_new(hedge *hafter, vertex *vtx)
/* _DEBUG("Out of memory in hedge_new()\n",NULL); */
return NULL;
}
+ h->next0 = js->hedges;
+ js->hedges = h;
h->f = hafter->f;
h->vtx = vtx;
h->e = NULL;
@@ -390,13 +399,15 @@ static hedge *hedge_new(hedge *hafter, vertex *vtx)
return h;
}
-static edge *edge_new(solid *s)
+static edge *edge_new(jigglystruct *js, solid *s)
{
edge *e = (edge*)malloc(sizeof(edge));
if(!e) {
/* _DEBUG("Out of memory in edge_new()\n",NULL);*/
exit(-1);
}
+ e->next0 = js->edges;
+ js->edges = e;
e->next = s->edges;
s->edges = e;
e-> s = s;
@@ -404,13 +415,15 @@ static edge *edge_new(solid *s)
return e;
}
-static face *face_new(solid *s, hedge *h)
+static face *face_new(jigglystruct *js, solid *s, hedge *h)
{
face *f = (face*)malloc(sizeof(face));
if(!f) {
/* _DEBUG("Out of memory in face_new()",NULL);*/
exit(-1);
}
+ f->next0 = js->faces;
+ js->faces = f;
f->s = s;
f->start = h;
f->next = s->faces;
@@ -432,7 +445,7 @@ static face *face_new(solid *s, hedge *h)
* the vertex returned will have h==<the new halfedge>.
*/
-static vertex *vertex_split(hedge *h, vector v)
+static vertex *vertex_split(jigglystruct *js, hedge *h, vector v)
{
hedge *h2, *hn1, *hn2;
vertex *vtxn;
@@ -442,10 +455,10 @@ static vertex *vertex_split(hedge *h, vector v)
f1 = h->f;
h2 = partner(h);
- vtxn = vertex_new(f1->s, v);
- hn1 = hedge_new(h, vtxn);
+ vtxn = vertex_new(js, f1->s, v);
+ hn1 = hedge_new(js, h, vtxn);
vtxn->h = hn1;
- hn2 = hedge_new(h2, vtxn);
+ hn2 = hedge_new(js, h2, vtxn);
hn2->e = h->e;
if(h2->e->left == h2)
@@ -453,7 +466,7 @@ static vertex *vertex_split(hedge *h, vector v)
else
h2->e->right = hn2;
- en = edge_new(f1->s);
+ en = edge_new(js, f1->s);
en->left = hn1;
en->right = h2;
hn1->e = en;
@@ -461,7 +474,7 @@ static vertex *vertex_split(hedge *h, vector v)
return vtxn;
}
-static face *face_split(face *f, hedge *h1, hedge *h2)
+static face *face_split(jigglystruct *js, face *f, hedge *h1, hedge *h2)
{
hedge *hn1, *hn2, *tmp;
edge *en;
@@ -482,9 +495,9 @@ static face *face_split(face *f, hedge *h1, hedge *h2)
h1->prev = h2->prev;
h2->prev = tmp;
/* insert halfedges & create edge */
- hn1 = hedge_new(h2->prev, h1->vtx);
- hn2 = hedge_new(h1->prev, h2->vtx);
- en = edge_new(f->s);
+ hn1 = hedge_new(js, h2->prev, h1->vtx);
+ hn2 = hedge_new(js, h1->prev, h2->vtx);
+ en = edge_new(js, f->s);
en->left = hn1;
en->right = hn2;
hn1->e = en;
@@ -496,7 +509,7 @@ static face *face_split(face *f, hedge *h1, hedge *h2)
while(tmp != h1 && tmp != h2)
tmp = tmp->next;
tmp = (tmp == h1) ? h2 : h1 ;
- fn = face_new(f->s, tmp);
+ fn = face_new(js, f->s, tmp);
do {
tmp->f = fn;
tmp = tmp->next;
@@ -505,7 +518,7 @@ static face *face_split(face *f, hedge *h1, hedge *h2)
return fn;
}
-static solid *solid_new(vector where)
+static solid *solid_new(jigglystruct *js, vector where)
{
solid *s = (solid*)malloc(sizeof(solid));
face *f1, *f2;
@@ -522,19 +535,24 @@ static solid *solid_new(vector where)
h1->next = h1->prev = h1;
h2->next = h2->prev = h2;
- vtx = vertex_new(s, where);
+ h1->next0 = js->hedges;
+ js->hedges = h1;
+ h2->next0 = js->hedges;
+ js->hedges = h2;
+
+ vtx = vertex_new(js, s, where);
vtx->h = h1;
h1->vtx = vtx;
h2->vtx = vtx;
- e = edge_new(s);
+ e = edge_new(js, s);
e->left = h1;
e->right = h2;
h1->e = e;
h2->e = e;
- f1 = face_new(s, h1);
- f2 = face_new(s, h2);
+ f1 = face_new(js, s, h1);
+ f2 = face_new(js, s, h2);
h1->f = f1;
h2->f = f2;
@@ -542,14 +560,14 @@ static solid *solid_new(vector where)
}
/* This is all the code directly related to constructing the jigglypuff */
-static void face_tessel2(face *f)
+static void face_tessel2(jigglystruct *js, face *f)
{
hedge *h1=f->start->prev, *h2=f->start->next;
if(h1->next == h1)
return;
while(h2 != h1 && h2->next != h1) {
- f = face_split(f, h1, h2);
+ f = face_split(js, f, h1, h2);
h1 = f->start;
h2 = f->start->next->next;
}
@@ -563,7 +581,7 @@ static void face_tessel2(face *f)
* added at the head of the list. If that ever changes,
* this is borked.
*/
-static void solid_tesselate(solid *s)
+static void solid_tesselate(jigglystruct *js, solid *s)
{
edge *e = s->edges;
face *f = s->faces;
@@ -571,11 +589,11 @@ static void solid_tesselate(solid *s)
while(e) {
vector v;
midpoint(e->left->vtx->v, e->right->vtx->v, v);
- vertex_split(e->left, v);
+ vertex_split(js, e->left, v);
e = e->next;
}
while(f) {
- face_tessel2(f);
+ face_tessel2(js, f);
f=f->next;
}
}
@@ -600,19 +618,19 @@ static solid *tetrahedron(jigglystruct *js)
int i;
vector_init(v, 1, 1, 1);
- s = solid_new(v);
+ s = solid_new(js, v);
vector_init(v, -1, -1, 1);
h = s->faces->start;
- vtx = vertex_split(h, v);
+ vtx = vertex_split(js, h, v);
vector_init(v, -1, 1, -1);
- vtx = vertex_split(vtx->h, v);
+ vtx = vertex_split(js, vtx->h, v);
h = vtx->h;
- f = face_split(s->faces, h, h->prev);
+ f = face_split(js, s->faces, h, h->prev);
vector_init(v, 1, -1, -1);
- vertex_split(f->start, v);
+ vertex_split(js, f->start, v);
f = s->faces->next->next;
h = f->start;
- face_split(f, h, h->next->next);
+ face_split(js, f, h, h->next->next);
if(js->color_style == COLOR_STYLE_FLOWERBOX) {
f = s->faces;
@@ -630,7 +648,7 @@ static solid *tesselated_tetrahedron(coord size, int iter, jigglystruct *js) {
int i;
for(i=0; i<iter; i++) {
- solid_tesselate(s);
+ solid_tesselate(js, s);
}
return s;
}
@@ -768,9 +786,12 @@ static void update_shape(jigglystruct *js)
static void init_texture(ModeInfo *mi)
{
+ jigglystruct *js = &jss[MI_SCREEN(mi)];
XImage *img = image_data_to_ximage(mi->dpy, mi->xgwa.visual,
jigglymap_png, sizeof(jigglymap_png));
+ glGenTextures (1, &js->texid);
+ glBindTexture (GL_TEXTURE_2D, js->texid);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
img->width, img->height, 0, GL_RGBA,
GL_UNSIGNED_BYTE, img->data);
@@ -959,7 +980,7 @@ ENTRYPOINT void draw_jigglypuff(ModeInfo *mi)
{
jigglystruct *js = &jss[MI_SCREEN(mi)];
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(js->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *js->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -1054,7 +1075,7 @@ ENTRYPOINT void init_jigglypuff(ModeInfo *mi)
calculate_parameters(js, subdivs);
if((js->glx_context = init_GL(mi)) != NULL) {
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(js->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *js->glx_context);
setup_opengl(mi, js);
reshape_jigglypuff(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
}
@@ -1069,6 +1090,41 @@ ENTRYPOINT void init_jigglypuff(ModeInfo *mi)
js->do_wireframe, js->spooky, js->color_style, js->shininess);*/
}
+
+ENTRYPOINT void free_jigglypuff(ModeInfo *mi)
+{
+ jigglystruct *js = &jss[MI_SCREEN(mi)];
+
+ if (!js->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *js->glx_context);
+
+ if (js->texid) glDeleteTextures(1, &js->texid);
+ if (js->trackball) gltrackball_free (js->trackball);
+
+ while (js->faces) {
+ face *n = js->faces->next0;
+ free (js->faces);
+ js->faces = n;
+ }
+ while (js->edges) {
+ edge *n = js->edges->next0;
+ free (js->edges);
+ js->edges = n;
+ }
+ while (js->hedges) {
+ hedge *n = js->hedges->next0;
+ free (js->hedges);
+ js->hedges = n;
+ }
+ while (js->vertices) {
+ vertex *n = js->vertices->next0;
+ free (js->vertices);
+ js->vertices = n;
+ }
+ free (js->shape);
+ if (js->texid) glDeleteTextures (1, &js->texid);
+}
+
XSCREENSAVER_MODULE ("JigglyPuff", jigglypuff)
#endif /* USE_GL */
diff --git a/hacks/glx/jigsaw.c b/hacks/glx/jigsaw.c
index 934dbcc..38716e2 100644
--- a/hacks/glx/jigsaw.c
+++ b/hacks/glx/jigsaw.c
@@ -59,7 +59,6 @@
"*suppressRotationAnimation: True\n" \
-# define free_jigsaw 0
# define release_jigsaw 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -1436,7 +1435,7 @@ draw_jigsaw (ModeInfo *mi)
if (!jc->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(jc->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *jc->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -1504,6 +1503,22 @@ draw_jigsaw (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_jigsaw (ModeInfo *mi)
+{
+ jigsaw_configuration *jc = &sps[MI_SCREEN(mi)];
+
+ if (!jc->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *jc->glx_context);
+
+ if (jc->trackball) free (jc->trackball);
+ if (jc->rot) free_rotator (jc->rot);
+ if (jc->texfont) free_texture_font (jc->texfont);
+ free_puzzle_grid (jc);
+ if (glIsList(jc->loading_dlist)) glDeleteLists(jc->loading_dlist, 1);
+}
+
XSCREENSAVER_MODULE ("Jigsaw", jigsaw)
#endif /* USE_GL */
diff --git a/hacks/glx/juggler3d.c b/hacks/glx/juggler3d.c
index 0315029..1b7d7c6 100644
--- a/hacks/glx/juggler3d.c
+++ b/hacks/glx/juggler3d.c
@@ -640,6 +640,13 @@ ENTRYPOINT void
free_juggle(ModeInfo *mi) {
jugglestruct *sp = &juggles[MI_SCREEN(mi)];
+ if (!sp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+
+ if (sp->trackball) gltrackball_free (sp->trackball);
+ if (sp->rot) free_rotator (sp->rot);
+ if (sp->font_data) free_texture_font (sp->font_data);
+
if (sp->head != NULL) {
while (sp->head->next != sp->head) {
trajectory_destroy(sp->head->next);
@@ -668,7 +675,6 @@ add_throw(ModeInfo *mi, char type, int h, Notation n, const char* name)
ADD_ELEMENT(Trajectory, t, sp->head->prev);
if(t == NULL){ /* Out of Memory */
- free_juggle(mi);
return False;
}
t->object = NULL;
@@ -909,7 +915,6 @@ part(ModeInfo *mi)
t->action = CATCH;
ADD_ELEMENT(Trajectory, nt, p);
if(nt == NULL){
- free_juggle(mi);
return False;
}
nt->object = NULL;
@@ -2570,7 +2575,6 @@ refill_juggle(ModeInfo * mi)
positions(sp);
if (!projectile(sp)) {
- free_juggle(mi);
return;
}
@@ -2729,14 +2733,12 @@ init_juggle (ModeInfo * mi)
/* create circular trajectory list */
ADD_ELEMENT(Trajectory, sp->head, sp->head);
if(sp->head == NULL){
- free_juggle(mi);
return;
}
/* create circular object list */
ADD_ELEMENT(Object, sp->objects, sp->objects);
if(sp->objects == NULL){
- free_juggle(mi);
return;
}
@@ -2828,7 +2830,7 @@ draw_juggle (ModeInfo *mi)
if (!sp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
glShadeModel(GL_SMOOTH);
diff --git a/hacks/glx/kaleidocycle.c b/hacks/glx/kaleidocycle.c
index 884400f..b3a7fee 100644
--- a/hacks/glx/kaleidocycle.c
+++ b/hacks/glx/kaleidocycle.c
@@ -21,7 +21,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_kaleidocycle 0
# define release_kaleidocycle 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -414,7 +413,7 @@ draw_kaleidocycle (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -569,6 +568,19 @@ draw_kaleidocycle (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_kaleidocycle (ModeInfo *mi)
+{
+ kaleidocycle_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->rot2) free_rotator (bp->rot2);
+ if (bp->colors) free (bp->colors);
+}
+
XSCREENSAVER_MODULE ("Kaleidocycle", kaleidocycle)
#endif /* USE_GL */
diff --git a/hacks/glx/klein.c b/hacks/glx/klein.c
index 1c042da..0fac5d2 100644
--- a/hacks/glx/klein.c
+++ b/hacks/glx/klein.c
@@ -137,7 +137,6 @@ static const char sccsid[] = "@(#)klein.c 1.1 08/10/04 xlockmore";
# define DEFAULTS "*delay: 10000 \n" \
"*showFPS: False \n" \
-# define free_klein 0
# define release_klein 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
@@ -2065,7 +2064,7 @@ ENTRYPOINT void draw_klein(ModeInfo *mi)
if (!kb->glx_context)
return;
- glXMakeCurrent(display,window,*(kb->glx_context));
+ glXMakeCurrent(display, window, *kb->glx_context);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
@@ -2089,11 +2088,21 @@ ENTRYPOINT void change_klein(ModeInfo *mi)
if (!kb->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(kb->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *kb->glx_context);
init(mi);
}
#endif /* !STANDALONE */
+ENTRYPOINT void free_klein(ModeInfo *mi)
+{
+ kleinstruct *kb = &klein[MI_SCREEN(mi)];
+ if (!kb->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *kb->glx_context);
+ gltrackball_free (kb->trackballs[0]);
+ gltrackball_free (kb->trackballs[1]);
+ if (kb->tex_name) glDeleteTextures (1, &kb->tex_name);
+}
+
XSCREENSAVER_MODULE ("Klein", klein)
#endif /* USE_GL */
diff --git a/hacks/glx/lament.c b/hacks/glx/lament.c
index 97ce18b..d84a58f 100644
--- a/hacks/glx/lament.c
+++ b/hacks/glx/lament.c
@@ -32,7 +32,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_lament 0
# define release_lament 0
#include "xlockmore.h"
@@ -1768,7 +1767,7 @@ draw_lament (ModeInfo *mi)
glDrawBuffer(GL_BACK);
- glXMakeCurrent(dpy, window, *(lc->glx_context));
+ glXMakeCurrent(dpy, window, *lc->glx_context);
draw(mi);
if (mi->fps_p) do_fps (mi);
@@ -1781,6 +1780,23 @@ draw_lament (ModeInfo *mi)
animate(mi);
}
+ENTRYPOINT void
+free_lament (ModeInfo *mi)
+{
+ lament_configuration *lc = &lcs[MI_SCREEN(mi)];
+ int i;
+ if (!lc->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *lc->glx_context);
+ if (lc->states) free (lc->states);
+ if (lc->trackball) gltrackball_free (lc->trackball);
+ if (lc->rot) free_rotator (lc->rot);
+ if (lc->texture) XDestroyImage (lc->texture);
+ for (i = 0; i < countof(all_objs); i++)
+ if (glIsList(lc->dlists[i])) glDeleteLists(lc->dlists[i], 1);
+ for (i = 0; i < countof(lc->texids); i++)
+ if (lc->texids[i]) glDeleteTextures (1, &lc->texids[i]);
+}
+
XSCREENSAVER_MODULE ("Lament", lament)
#endif /* USE_GL */
diff --git a/hacks/glx/lavalite.c b/hacks/glx/lavalite.c
index 73d5805..8d484fe 100644
--- a/hacks/glx/lavalite.c
+++ b/hacks/glx/lavalite.c
@@ -70,7 +70,6 @@
"*geometry: 600x900\n" \
"*count: " DEF_COUNT " \n" \
-# define free_lavalite 0
# define release_lavalite 0
@@ -1423,7 +1422,7 @@ draw_lavalite (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glMatrixMode (GL_MODELVIEW);
glPushMatrix ();
@@ -1534,6 +1533,21 @@ draw_lavalite (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_lavalite (ModeInfo *mi)
+{
+ lavalite_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->balls) free (bp->balls);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->rot2) free_rotator (bp->rot2);
+ if (glIsList(bp->bottle_list)) glDeleteLists(bp->bottle_list, 1);
+ if (glIsList(bp->ball_list)) glDeleteLists(bp->ball_list, 1);
+}
+
XSCREENSAVER_MODULE ("Lavalite", lavalite)
#endif /* USE_GL */
diff --git a/hacks/glx/lockward.c b/hacks/glx/lockward.c
index f15374b..2bd87e9 100644
--- a/hacks/glx/lockward.c
+++ b/hacks/glx/lockward.c
@@ -213,8 +213,7 @@ reshape_lockward (ModeInfo *mi, int width, int height)
h = height / (GLfloat) width;
}
- glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi),
- *(ctx->glx_context));
+ glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), *ctx->glx_context);
glViewport (0, y, (GLint) width, (GLint) height);
@@ -734,7 +733,7 @@ draw_lockward (ModeInfo *mi)
if (!ctx->glx_context)
return;
- glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), *(ctx->glx_context));
+ glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), *ctx->glx_context);
glClear (GL_COLOR_BUFFER_BIT);
@@ -937,11 +936,8 @@ free_lockward (ModeInfo *mi)
lockward_context *ctx = &g_ctx[MI_SCREEN (mi)];
int i;
- if (!ctx->glx_context)
- return;
-
- glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi),
- *(ctx->glx_context));
+ if (!ctx->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), *ctx->glx_context);
if (ctx->blink.noise)
free (ctx->blink.noise);
diff --git a/hacks/glx/maze3d.c b/hacks/glx/maze3d.c
index 255839e..362d5d2 100755
--- a/hacks/glx/maze3d.c
+++ b/hacks/glx/maze3d.c
@@ -1170,7 +1170,7 @@ draw_maze (ModeInfo * mi)
if (!maze->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(maze->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *maze->glx_context);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
@@ -1919,6 +1919,10 @@ ENTRYPOINT void
free_maze (ModeInfo * mi)
{
maze_configuration *maze = &mazes[MI_SCREEN(mi)];
+ int i;
+
+ if (!maze->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *maze->glx_context);
glDeleteTextures(1, &maze->wallTexture);
glDeleteTextures(1, &maze->floorTexture);
@@ -1937,16 +1941,14 @@ free_maze (ModeInfo * mi)
glDeleteTextures(1, &maze->fractal4Texture);
# endif
- glDeleteLists(maze->dlists[ARROW], 4);
- glDeleteLists(maze->dlists[INVERTER_TETRAHEDRON], 4);
+ for (i = 0; i < countof(maze->dlists); i++)
+ if (glIsList(maze->dlists[i])) glDeleteLists(maze->dlists[i], 1);
free(maze->mazeGrid);
free(maze->wallList);
free(maze->inverterPosition);
free(maze->gl3dTextPosition);
free(maze->rats);
-
- memset(maze, 0, sizeof(*maze));
}
diff --git a/hacks/glx/maze3d.man b/hacks/glx/maze3d.man
index c60fd65..c60fd65 100755..100644
--- a/hacks/glx/maze3d.man
+++ b/hacks/glx/maze3d.man
diff --git a/hacks/glx/menger.c b/hacks/glx/menger.c
index 249d224..96582e3 100644
--- a/hacks/glx/menger.c
+++ b/hacks/glx/menger.c
@@ -56,7 +56,6 @@
"*suppressRotationAnimation: True\n" \
-# define free_sponge 0
# define release_sponge 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -481,7 +480,7 @@ draw_sponge (ModeInfo *mi)
if (!sp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -557,6 +556,21 @@ draw_sponge (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_sponge (ModeInfo *mi)
+{
+ sponge_configuration *sp = &sps[MI_SCREEN(mi)];
+ if (!sp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+ if (sp->colors) free (sp->colors);
+ if (sp->rot) free_rotator (sp->rot);
+ if (sp->trackball) gltrackball_free (sp->trackball);
+ if (glIsList(sp->sponge_list0)) glDeleteLists(sp->sponge_list0, 1);
+ if (glIsList(sp->sponge_list1)) glDeleteLists(sp->sponge_list1, 1);
+ if (glIsList(sp->sponge_list2)) glDeleteLists(sp->sponge_list2, 1);
+}
+
XSCREENSAVER_MODULE_2 ("Menger", menger, sponge)
#endif /* USE_GL */
diff --git a/hacks/glx/mirrorblob.c b/hacks/glx/mirrorblob.c
index eb746d1..42981bd 100644
--- a/hacks/glx/mirrorblob.c
+++ b/hacks/glx/mirrorblob.c
@@ -1729,7 +1729,7 @@ draw_mirrorblob(ModeInfo * mi)
if (gp->waiting_for_image_p && gp->first_image_p)
return;
- glXMakeCurrent(display, window, *(gp->glx_context));
+ glXMakeCurrent(display, window, *gp->glx_context);
draw_scene(mi);
if (mi->fps_p) do_fps (mi);
glFinish();
@@ -1826,14 +1826,24 @@ ENTRYPOINT void
free_mirrorblob(ModeInfo * mi)
{
mirrorblobstruct *gp = &Mirrorblob[MI_SCREEN(mi)];
+ int i;
+
+ if (!gp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
+
if (gp->nodes) free(gp->nodes);
if (gp->faces) free(gp->faces);
if (gp->bump_data) free(gp->bump_data);
if (gp->colours) free(gp->colours);
if (gp->tex_coords) free(gp->tex_coords);
if (gp->dots) free(gp->dots);
+ if (gp->normals) free(gp->normals);
if (gp->wall_shape) free(gp->wall_shape);
if (gp->bump_shape) free(gp->bump_shape);
+ if (gp->trackball) gltrackball_free (gp->trackball);
+
+ for (i = 0; i < NUM_TEXTURES; i++)
+ if (gp->textures[i]) glDeleteTextures(1, &gp->textures[i]);
}
XSCREENSAVER_MODULE ("MirrorBlob", mirrorblob)
diff --git a/hacks/glx/moebius.c b/hacks/glx/moebius.c
index 5ef2c0d..e3155ac 100644
--- a/hacks/glx/moebius.c
+++ b/hacks/glx/moebius.c
@@ -79,7 +79,6 @@ static const char sccsid[] = "@(#)moebius.c 5.01 2001/03/01 xlockmore";
#ifdef STANDALONE
# define MODE_moebius
-# define free_moebius 0
# define release_moebius 0
# define DEFAULTS "*delay: 20000 \n" \
"*showFPS: False \n" \
@@ -715,7 +714,7 @@ draw_moebius (ModeInfo * mi)
if (!mp->glx_context)
return;
- glXMakeCurrent(display, window, *(mp->glx_context));
+ glXMakeCurrent(display, window, *mp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -777,11 +776,20 @@ change_moebius (ModeInfo * mi)
if (!mp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
pinit();
}
#endif /* !STANDALONE */
+ENTRYPOINT void
+free_moebius (ModeInfo * mi)
+{
+ moebiusstruct *mp = &moebius[MI_SCREEN(mi)];
+ if (!mp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+ if (mp->trackball) gltrackball_free (mp->trackball);
+ if (mp->rot) free_rotator (mp->rot);
+}
XSCREENSAVER_MODULE ("Moebius", moebius)
diff --git a/hacks/glx/moebiusgears.c b/hacks/glx/moebiusgears.c
index 0f058b8..fdcd4e0 100644
--- a/hacks/glx/moebiusgears.c
+++ b/hacks/glx/moebiusgears.c
@@ -15,7 +15,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_mgears 0
# define release_mgears 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -344,7 +343,7 @@ draw_mgears (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glShadeModel(GL_SMOOTH);
@@ -432,6 +431,18 @@ draw_mgears (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_mgears (ModeInfo *mi)
+{
+ mgears_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->gears) free (bp->gears);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+}
+
XSCREENSAVER_MODULE_2 ("MoebiusGears", moebiusgears, mgears)
#endif /* USE_GL */
diff --git a/hacks/glx/molecule.c b/hacks/glx/molecule.c
index d8bc1d8..94d7dd3 100644
--- a/hacks/glx/molecule.c
+++ b/hacks/glx/molecule.c
@@ -33,7 +33,6 @@
"*wireframeThreshold: 150 \n" \
"*suppressRotationAnimation: True\n" \
-# define free_molecule 0
# define release_molecule 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -124,7 +123,7 @@ static const atom_data all_atom_data[] = {
typedef struct {
int id; /* sequence number in the PDB file */
- const char *label; /* The atom name */
+ char *label; /* The atom name */
GLfloat x, y, z; /* position in 3-space (angstroms) */
const atom_data *data; /* computed: which style of atom this is */
} molecule_atom;
@@ -136,7 +135,7 @@ typedef struct {
typedef struct {
- const char *label; /* description of this compound */
+ char *label; /* description of this compound */
int natoms, atoms_size;
int nbonds, bonds_size;
molecule_atom *atoms;
@@ -635,7 +634,7 @@ build_molecule (ModeInfo *mi, Bool transparent_p)
static void
push_atom (molecule *m,
- int id, const char *label,
+ int id, char *label,
GLfloat x, GLfloat y, GLfloat z)
{
m->natoms++;
@@ -723,7 +722,7 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
!strcmp (n2 + strlen(n2) - 4, ".pdb"))
n2[strlen(n2)-4] = 0;
- if (m->label) free ((char *) m->label);
+ if (m->label) free (m->label);
m->label = strdup (n2);
free (name);
}
@@ -780,7 +779,8 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
int id;
const char *end = strchr (s, '\n');
int L = end - s;
- char *name = (char *) calloc (1, 4);
+ char *oname = (char *) calloc (1, 4);
+ char *name = oname;
GLfloat x = -999, y = -999, z = -999;
if (1 != sscanf (s+7, " %d ", &id))
@@ -816,12 +816,14 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
progname, filename, line,
id, name, x, y, z);
*/
- push_atom (m, id, name, x, y, z);
+ push_atom (m, id, strdup(name), x, y, z);
+ free (oname);
}
else if (!strncmp (s, "HETATM ", 7))
{
int id;
- char *name = (char *) calloc (1, 4);
+ char *oname = (char *) calloc (1, 4);
+ char *name = oname;
GLfloat x = -999, y = -999, z = -999;
if (1 != sscanf (s+7, " %d ", &id))
@@ -839,7 +841,8 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
progname, filename, line,
id, name, x, y, z);
*/
- push_atom (m, id, name, x, y, z);
+ push_atom (m, id, strdup(name), x, y, z);
+ free (oname);
}
else if (!strncmp (s, "CONECT ", 7))
{
@@ -893,6 +896,7 @@ parse_pdb_file (molecule *m, const char *name)
char *buf = (char *) malloc(1024 + strlen(name));
sprintf(buf, "%s: error reading \"%s\"", progname, name);
perror(buf);
+ free(buf);
return -1;
}
@@ -1001,7 +1005,7 @@ generate_molecule_formula (molecule *m)
strcpy (s, m->label);
strcat (s, "\n");
strcat (s, buf);
- free ((char *) m->label);
+ free (m->label);
free (buf);
m->label = s;
}
@@ -1162,6 +1166,7 @@ load_molecules (ModeInfo *mi)
if (mc->nmolecules == 0) /* do the builtins if no files */
{
mc->nmolecules = countof(builtin_pdb_data);
+ if (mc->molecules) free (mc->molecules);
mc->molecules = (molecule *) calloc (sizeof (molecule), mc->nmolecules);
for (i = 0; i < mc->nmolecules; i++)
{
@@ -1557,7 +1562,7 @@ draw_molecule (ModeInfo *mi)
if (!mc->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mc->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mc->glx_context);
if (mc->draw_time == 0)
{
@@ -1677,6 +1682,35 @@ draw_molecule (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_molecule (ModeInfo *mi)
+{
+ molecule_configuration *mc = &mcs[MI_SCREEN(mi)];
+ int i, j;
+
+ if (!mc->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mc->glx_context);
+
+ for (i = 0; i < mc->nmolecules; i++) {
+ molecule *m = &mc->molecules[i];
+ for (j = 0; j < m->natoms; j++)
+ free (m->atoms[j].label);
+ free (m->atoms);
+ free (m->bonds);
+ free (m->label);
+ }
+ if (mc->molecules) free (mc->molecules);
+ if (mc->trackball) gltrackball_free (mc->trackball);
+ if (mc->rot) free_rotator (mc->rot);
+ if (mc->atom_font) free_texture_font (mc->atom_font);
+ if (mc->title_font) free_texture_font (mc->title_font);
+
+ if (glIsList(mc->molecule_dlist)) glDeleteLists(mc->molecule_dlist, 1);
+ if (glIsList(mc->shell_dlist)) glDeleteLists(mc->shell_dlist, 1);
+ if (glIsList(mc->molecule_dlist)) glDeleteLists(mc->molecule_dlist, 1);
+}
+
XSCREENSAVER_MODULE ("Molecule", molecule)
#endif /* USE_GL */
diff --git a/hacks/glx/morph3d.c b/hacks/glx/morph3d.c
index 0780444..0f37223 100644
--- a/hacks/glx/morph3d.c
+++ b/hacks/glx/morph3d.c
@@ -58,7 +58,6 @@ static const char sccsid[] = "@(#)morph3d.c 5.01 2001/03/01 xlockmore";
"*count: 0 \n" \
"*suppressRotationAnimation: True\n" \
-# define free_morph3d 0
# define release_morph3d 0
# define morph3d_handle_event xlockmore_no_events
# include "xlockmore.h" /* from the xscreensaver distribution */
@@ -760,7 +759,7 @@ draw_morph3d(ModeInfo * mi)
return;
mi->polygon_count = 0;
- glXMakeCurrent(display, window, *(mp->glx_context));
+ glXMakeCurrent(display, window, *mp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -832,6 +831,12 @@ change_morph3d(ModeInfo * mi)
}
#endif /* !STANDALONE */
+ENTRYPOINT void
+free_morph3d(ModeInfo * mi)
+{
+ /* nothing to do */
+}
+
#endif
XSCREENSAVER_MODULE ("Morph3D", morph3d)
diff --git a/hacks/glx/noof.c b/hacks/glx/noof.c
index 4e42840..2349b07 100644
--- a/hacks/glx/noof.c
+++ b/hacks/glx/noof.c
@@ -19,7 +19,6 @@
"*doubleBuffer: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_noof 0
# define release_noof 0
# define noof_handle_event 0
#include "xlockmore.h"
@@ -379,7 +378,7 @@ draw_noof (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -398,6 +397,7 @@ draw_noof (ModeInfo *mi)
glBindTexture (GL_TEXTURE_2D, bp->screenshot_texture);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glColor3f (1, 1, 1);
glBegin (GL_QUADS);
glTexCoord2f (0, 0); glVertex3f (0, 0, 0);
glTexCoord2f (tw, 0); glVertex3f (bp->wd, 0, 0);
@@ -514,6 +514,16 @@ init_noof (ModeInfo *mi)
}
+ENTRYPOINT void
+free_noof (ModeInfo *mi)
+{
+ noof_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->screenshot_texture) glDeleteTextures (1, &bp->screenshot_texture);
+}
+
+
XSCREENSAVER_MODULE ("Noof", noof)
#endif /* USE_GL */
diff --git a/hacks/glx/peepers.c b/hacks/glx/peepers.c
index 02ebab8..4d15ff8 100644
--- a/hacks/glx/peepers.c
+++ b/hacks/glx/peepers.c
@@ -22,7 +22,6 @@
"*showFPS: False \n" \
"*wireframe: False \n" \
-# define free_peepers 0
# define release_peepers 0
#define DEF_SPEED "1.0"
@@ -1375,7 +1374,7 @@ draw_peepers (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -1450,6 +1449,25 @@ draw_peepers (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_peepers (ModeInfo *mi)
+{
+ peepers_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ for (i = 0; i < bp->nfloaters; i++)
+ free_rotator (bp->floaters[i].rot);
+ if (bp->floaters) free (bp->floaters);
+ if (glIsList(bp->lens_list)) glDeleteLists(bp->lens_list, 1);
+ if (glIsList(bp->sclera_list)) glDeleteLists(bp->sclera_list, 1);
+ if (glIsList(bp->iris_list)) glDeleteLists(bp->iris_list, 1);
+ if (glIsList(bp->retina_list)) glDeleteLists(bp->retina_list, 1);
+ if (bp->sclera_texture) glDeleteTextures (1, &bp->sclera_texture);
+ if (bp->iris_texture) glDeleteTextures (1, &bp->iris_texture);
+}
+
XSCREENSAVER_MODULE ("Peepers", peepers)
#endif /* USE_GL */
diff --git a/hacks/glx/photopile.c b/hacks/glx/photopile.c
index e060f25..01d18d6 100644
--- a/hacks/glx/photopile.c
+++ b/hacks/glx/photopile.c
@@ -31,7 +31,6 @@
"*chooseRandomImages: True \n" \
"*suppressRotationAnimation: True\n" \
-# define free_photopile 0
# define release_photopile 0
# define photopile_handle_event xlockmore_no_events
@@ -471,6 +470,7 @@ hack_resources (Display *dpy)
value.addr = buf2;
value.size = strlen(buf2);
XrmPutResource (&db, buf1, "String", &value);
+ free (val);
# endif /* !HAVE_JWXYZ */
}
@@ -730,7 +730,7 @@ draw_photopile (ModeInfo *mi)
if (!ss->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
if (ss->mode == EARLY)
if (loading_initial_image (mi))
@@ -828,6 +828,24 @@ draw_photopile (ModeInfo *mi)
glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi));
}
+
+ENTRYPOINT void
+free_photopile (ModeInfo *mi)
+{
+ photopile_state *ss = &sss[MI_SCREEN(mi)];
+ if (!ss->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
+ if (ss->frames) {
+ int i;
+ for (i = 0; i < MI_COUNT(mi); i++) {
+ if (ss->frames[i].title) free (ss->frames[i].title);
+ if (ss->frames[i].texid) glDeleteTextures(1, &ss->frames[i].texid);
+ }
+ }
+ if (ss->shadow) glDeleteTextures(1, &ss->shadow);
+ if (ss->texfont) free_texture_font (ss->texfont);
+}
+
XSCREENSAVER_MODULE ("Photopile", photopile)
#endif /* USE_GL */
diff --git a/hacks/glx/pinion.c b/hacks/glx/pinion.c
index f6793eb..956a444 100644
--- a/hacks/glx/pinion.c
+++ b/hacks/glx/pinion.c
@@ -16,7 +16,6 @@
"*titleFont2: -*-helvetica-medium-r-normal-*-*-120-*-*-*-*-*-*\n" \
"*titleFont3: -*-helvetica-medium-r-normal-*-*-80-*-*-*-*-*-*\n" \
-# define free_pinion 0
# define release_pinion 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -1355,7 +1354,7 @@ draw_pinion (ModeInfo *mi)
if (!pp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
glPushMatrix();
glRotatef(current_device_rotation(), 0, 0, 1);
@@ -1465,6 +1464,25 @@ draw_pinion (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_pinion (ModeInfo *mi)
+{
+ pinion_configuration *pp = &pps[MI_SCREEN(mi)];
+ int i;
+
+ if (!pp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
+
+ for (i = 0; i < pp->ngears; i++)
+ if (pp->gears[i]) free_gear (pp->gears[i]);
+ if (pp->gears) free (pp->gears);
+ if (pp->trackball) gltrackball_free (pp->trackball);
+ if (pp->font1) free_texture_font (pp->font1);
+ if (pp->font2) free_texture_font (pp->font2);
+ if (pp->font3) free_texture_font (pp->font3);
+}
+
XSCREENSAVER_MODULE ("Pinion", pinion)
#endif /* USE_GL */
diff --git a/hacks/glx/pipes.c b/hacks/glx/pipes.c
index 24f9a2a..0112f93 100644
--- a/hacks/glx/pipes.c
+++ b/hacks/glx/pipes.c
@@ -183,7 +183,7 @@ typedef struct {
GLXContext *glx_context;
Bool button_down_p;
- trackball_state *trackball;
+ trackball_state *trackball;
GLuint *dlists, *poly_counts;
int dlist_count, dlist_size;
int system_index, system_size;
@@ -1079,7 +1079,7 @@ draw_pipes (ModeInfo * mi)
if (!pp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
@@ -1166,7 +1166,7 @@ change_pipes (ModeInfo * mi)
if (!pp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
pinit(mi, 1);
}
#endif /* !STANDALONE */
@@ -1177,42 +1177,41 @@ free_pipes (ModeInfo * mi)
{
pipesstruct *pp = &pipes[MI_SCREEN(mi)];
- if (pp->glx_context) {
-
- /* Display lists MUST be freed while their glXContext is current. */
- glXMakeCurrent(MI_DISPLAY(mi), pp->window, *(pp->glx_context));
-
- if (pp->valve)
- glDeleteLists(pp->valve, 1);
- if (pp->bolts)
- glDeleteLists(pp->bolts, 1);
- if (pp->betweenbolts)
- glDeleteLists(pp->betweenbolts, 1);
-
- if (pp->elbowbolts)
- glDeleteLists(pp->elbowbolts, 1);
- if (pp->elbowcoins)
- glDeleteLists(pp->elbowcoins, 1);
-
- if (pp->guagehead)
- glDeleteLists(pp->guagehead, 1);
- if (pp->guageface)
- glDeleteLists(pp->guageface, 1);
- if (pp->guagedial)
- glDeleteLists(pp->guagedial, 1);
- if (pp->guageconnector)
- glDeleteLists(pp->guageconnector, 1);
- if (pp->teapot)
- glDeleteLists(pp->teapot, 1);
- if (pp->dlists)
- {
- int i;
- for (i = 0; i < pp->dlist_count; i++)
- glDeleteLists (pp->dlists[i], 1);
- free (pp->dlists);
- free (pp->poly_counts);
- }
- }
+ if (!pp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
+
+ if (pp->trackball) gltrackball_free (pp->trackball);
+
+ if (pp->valve)
+ glDeleteLists(pp->valve, 1);
+ if (pp->bolts)
+ glDeleteLists(pp->bolts, 1);
+ if (pp->betweenbolts)
+ glDeleteLists(pp->betweenbolts, 1);
+
+ if (pp->elbowbolts)
+ glDeleteLists(pp->elbowbolts, 1);
+ if (pp->elbowcoins)
+ glDeleteLists(pp->elbowcoins, 1);
+
+ if (pp->guagehead)
+ glDeleteLists(pp->guagehead, 1);
+ if (pp->guageface)
+ glDeleteLists(pp->guageface, 1);
+ if (pp->guagedial)
+ glDeleteLists(pp->guagedial, 1);
+ if (pp->guageconnector)
+ glDeleteLists(pp->guageconnector, 1);
+ if (pp->teapot)
+ glDeleteLists(pp->teapot, 1);
+ if (pp->dlists)
+ {
+ int i;
+ for (i = 0; i < pp->dlist_count; i++)
+ glDeleteLists (pp->dlists[i], 1);
+ free (pp->dlists);
+ free (pp->poly_counts);
+ }
}
XSCREENSAVER_MODULE ("Pipes", pipes)
diff --git a/hacks/glx/polyhedra-gl.c b/hacks/glx/polyhedra-gl.c
index 507d295..00f6bd4 100644
--- a/hacks/glx/polyhedra-gl.c
+++ b/hacks/glx/polyhedra-gl.c
@@ -24,7 +24,6 @@
"*suppressRotationAnimation: True\n" \
-# define free_polyhedra 0
# define release_polyhedra 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -581,7 +580,7 @@ draw_polyhedra (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
if (bp->mode == 0 && do_which >= 0 && bp->change_to < 0)
;
@@ -678,6 +677,27 @@ draw_polyhedra (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_polyhedra (ModeInfo *mi)
+{
+ polyhedra_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+ for (i = 0; i < bp->npolyhedra; i++)
+ free_polyhedron (bp->polyhedra[i]);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->colors) free (bp->colors);
+ if (bp->font1_data) free_texture_font (bp->font1_data);
+ if (bp->font2_data) free_texture_font (bp->font2_data);
+ if (bp->font3_data) free_texture_font (bp->font3_data);
+ if (glIsList(bp->object_list)) glDeleteLists(bp->object_list, 1);
+}
+
XSCREENSAVER_MODULE ("Polyhedra", polyhedra)
#endif /* USE_GL */
diff --git a/hacks/glx/polyhedra.c b/hacks/glx/polyhedra.c
index a7699c9..98e6891 100644
--- a/hacks/glx/polyhedra.c
+++ b/hacks/glx/polyhedra.c
@@ -2406,6 +2406,7 @@ free_polyhedron (polyhedron *p)
Free (p->name);
Free (p->group);
Free (p->class);
+ Free (p->points);
if (p->faces)
{
int i;
diff --git a/hacks/glx/polytopes.c b/hacks/glx/polytopes.c
index 76c1287..c704722 100644
--- a/hacks/glx/polytopes.c
+++ b/hacks/glx/polytopes.c
@@ -93,7 +93,6 @@ static const char sccsid[] = "@(#)polytopes.c 1.2 05/09/28 xlockmore";
"*showFPS: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_polytopes 0
# define release_polytopes 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
@@ -3097,7 +3096,7 @@ ENTRYPOINT void draw_polytopes(ModeInfo *mi)
if (!hp->glx_context)
return;
- glXMakeCurrent(display,window,*(hp->glx_context));
+ glXMakeCurrent(display, window, *hp->glx_context);
glMatrixMode(GL_PROJECTION);
@@ -3179,11 +3178,20 @@ ENTRYPOINT void change_polytopes(ModeInfo *mi)
if (!hp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(hp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *hp->glx_context);
init(mi);
}
#endif /* !STANDALONE */
+ENTRYPOINT void free_polytopes(ModeInfo *mi)
+{
+ polytopesstruct *hp = &poly[MI_SCREEN(mi)];
+ if (!hp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *hp->glx_context);
+ gltrackball_free (hp->trackballs[0]);
+ gltrackball_free (hp->trackballs[1]);
+}
+
XSCREENSAVER_MODULE ("Polytopes", polytopes)
#endif /* USE_GL */
diff --git a/hacks/glx/projectiveplane.c b/hacks/glx/projectiveplane.c
index 2a1e566..3a052ea 100644
--- a/hacks/glx/projectiveplane.c
+++ b/hacks/glx/projectiveplane.c
@@ -219,7 +219,6 @@ static const char sccsid[] = "@(#)projectiveplane.c 1.1 14/01/01 xlockmore";
# define DEFAULTS "*delay: 10000 \n" \
"*showFPS: False \n" \
-# define free_projectiveplane 0
# define release_projectiveplane 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
@@ -1516,7 +1515,7 @@ ENTRYPOINT void draw_projectiveplane(ModeInfo *mi)
if (!pp->glx_context)
return;
- glXMakeCurrent(display,window,*(pp->glx_context));
+ glXMakeCurrent(display, window, *pp->glx_context);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
@@ -1540,11 +1539,21 @@ ENTRYPOINT void change_projectiveplane(ModeInfo *mi)
if (!pp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(pp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
init(mi);
}
#endif /* !STANDALONE */
+ENTRYPOINT void free_projectiveplane(ModeInfo *mi)
+{
+ projectiveplanestruct *pp = &projectiveplane[MI_SCREEN(mi)];
+ if (!pp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
+ gltrackball_free (pp->trackballs[0]);
+ gltrackball_free (pp->trackballs[1]);
+ if (pp->tex_name) glDeleteTextures (1, &pp->tex_name);
+}
+
XSCREENSAVER_MODULE ("ProjectivePlane", projectiveplane)
#endif /* USE_GL */
diff --git a/hacks/glx/providence.c b/hacks/glx/providence.c
index d628845..0ef87fd 100644
--- a/hacks/glx/providence.c
+++ b/hacks/glx/providence.c
@@ -19,7 +19,6 @@
"*showFPS: False \n" \
"*wireframe: False \n"
-# define free_providence 0
# define release_providence 0
#include "xlockmore.h"
#else
@@ -101,6 +100,8 @@ typedef struct {
double theta;
double theta_scale;
+ /* This structure is so large that debugging malloc requires
+ $MALLOC_PERMIT_INSANE_REQUESTS to be set under iOS... */
double particles[PARTICLE_COUNT][5];
int eyeparticles[EYE_PARTICLE_COUNT][2];
double lookup[LOOKUPSIZE][EYELENGTH][2];
@@ -713,7 +714,7 @@ ENTRYPOINT void draw_providence(ModeInfo * mi)
if(!mp->glx_context)
return;
- glXMakeCurrent(display, window, *(mp->glx_context));
+ glXMakeCurrent(display, window, *mp->glx_context);
/* setup twoside lighting */
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient2);
@@ -791,9 +792,19 @@ ENTRYPOINT void change_providence(ModeInfo * mi)
if (!mp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
pinit();
}
#endif /* !STANDALONE */
+ENTRYPOINT void free_providence(ModeInfo * mi)
+{
+ providencestruct *mp = &providence[MI_SCREEN(mi)];
+ if (!mp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+ gltrackball_free (mp->trackball);
+ if (glIsList(mp->pyramidlist)) glDeleteLists(mp->pyramidlist, 1);
+ if (mp->bricktexture) glDeleteTextures (1, &mp->bricktexture);
+}
+
XSCREENSAVER_MODULE ("Providence", providence)
diff --git a/hacks/glx/pulsar.c b/hacks/glx/pulsar.c
index 285b5de..4a3e79e 100644
--- a/hacks/glx/pulsar.c
+++ b/hacks/glx/pulsar.c
@@ -467,7 +467,7 @@ ENTRYPOINT void draw_pulsar(ModeInfo * mi)
if (!gp->glx_context)
return;
- glXMakeCurrent(display, window, *(gp->glx_context));
+ glXMakeCurrent(display, window, *gp->glx_context);
drawScene(mi);
if (mi->fps_p) do_fps (mi);
glXSwapBuffers(display, window);
@@ -508,7 +508,10 @@ init_pulsar(ModeInfo * mi)
ENTRYPOINT void free_pulsar(ModeInfo * mi)
{
pulsarstruct *gp = &Pulsar[MI_SCREEN(mi)];
+ if (!gp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
free(gp->quads);
+ if (glIsList(gp->quad_list)) glDeleteLists(gp->quad_list, 1);
}
#endif
diff --git a/hacks/glx/quasicrystal.c b/hacks/glx/quasicrystal.c
index b82f470..52f819e 100644
--- a/hacks/glx/quasicrystal.c
+++ b/hacks/glx/quasicrystal.c
@@ -24,7 +24,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_quasicrystal 0
# define release_quasicrystal 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -308,7 +307,7 @@ draw_quasicrystal (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -473,6 +472,24 @@ draw_quasicrystal (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_quasicrystal (ModeInfo *mi)
+{
+ quasicrystal_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ for (i = 0; i < bp->count; i++) {
+ free_rotator (bp->planes[i].rot);
+ free_rotator (bp->planes[i].rot2);
+ if (bp->planes[i].texid) glDeleteTextures (1, &bp->planes[i].texid);
+ }
+ if (bp->planes) free (bp->planes);
+ if (bp->colors) free (bp->colors);
+
+}
+
XSCREENSAVER_MODULE ("QuasiCrystal", quasicrystal)
#endif /* USE_GL */
diff --git a/hacks/glx/queens.c b/hacks/glx/queens.c
index bc9b202..fce9d37 100644
--- a/hacks/glx/queens.c
+++ b/hacks/glx/queens.c
@@ -22,7 +22,6 @@
"*showFPS: False \n" \
"*wireframe: False \n" \
-# define free_queens 0
# define release_queens 0
# include "xlockmore.h"
@@ -576,7 +575,7 @@ ENTRYPOINT void draw_queens(ModeInfo *mi)
if(!qs->glx_context)
return;
- glXMakeCurrent(disp, w, *(qs->glx_context));
+ glXMakeCurrent(disp, w, *qs->glx_context);
if(flat)
glShadeModel(GL_FLAT);
@@ -605,6 +604,20 @@ ENTRYPOINT void draw_queens(ModeInfo *mi)
glXSwapBuffers(disp, w);
}
+
+ENTRYPOINT void free_queens(ModeInfo *mi)
+{
+ Queenscreen *qs = &qss[MI_SCREEN(mi)];
+ int i;
+ if (!qs->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *qs->glx_context);
+ gltrackball_free (qs->trackball);
+
+ /* this is horrible! List numbers are hardcoded! */
+ for (i = 1; i <= 20; i++)
+ if (glIsList(i)) glDeleteLists(i, 1);
+}
+
XSCREENSAVER_MODULE ("Queens", queens)
#endif
diff --git a/hacks/glx/quickhull.h b/hacks/glx/quickhull.h
index 0dd0faa..161b74e 100644
--- a/hacks/glx/quickhull.h
+++ b/hacks/glx/quickhull.h
@@ -22,14 +22,9 @@
#define __QUICKHULL_H__
typedef struct qh_vertex {
- union {
- double v[3];
- struct {
- double x;
- double y;
- double z;
- };
- };
+ double x;
+ double y;
+ double z;
} qh_vertex_t;
typedef qh_vertex_t qh_vec3_t;
diff --git a/hacks/glx/raverhoop.c b/hacks/glx/raverhoop.c
index 5cf35f7..e08fdad 100644
--- a/hacks/glx/raverhoop.c
+++ b/hacks/glx/raverhoop.c
@@ -16,7 +16,6 @@
"*showFPS: False \n" \
"*wireframe: False \n" \
-# define free_hoop 0
# define release_hoop 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -715,7 +714,7 @@ draw_hoop (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -762,6 +761,31 @@ draw_hoop (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_hoop (ModeInfo *mi)
+{
+ hoop_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->lights) free (bp->lights);
+ while (bp->trail) {
+ afterimage *n = bp->trail->next;
+ free (bp->trail);
+ bp->trail = n;
+ }
+ while (bp->oscillators) {
+ oscillator *n = bp->oscillators->next;
+ free (bp->oscillators);
+ bp->oscillators = n;
+ }
+
+}
+
XSCREENSAVER_MODULE_2 ("RaverHoop", raverhoop, hoop)
#endif /* USE_GL */
diff --git a/hacks/glx/razzledazzle.c b/hacks/glx/razzledazzle.c
index a3c8f98..4c940d1 100644
--- a/hacks/glx/razzledazzle.c
+++ b/hacks/glx/razzledazzle.c
@@ -571,7 +571,7 @@ draw_dazzle (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glShadeModel(GL_SMOOTH);
glDisable(GL_DEPTH_TEST);
@@ -709,6 +709,10 @@ ENTRYPOINT void
free_dazzle (ModeInfo *mi)
{
dazzle_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
if (bp->nodes) free (bp->nodes);
if (bp->colors) free (bp->colors);
if (bp->dlists)
diff --git a/hacks/glx/romanboy.c b/hacks/glx/romanboy.c
index 9ad12f0..e906082 100644
--- a/hacks/glx/romanboy.c
+++ b/hacks/glx/romanboy.c
@@ -1497,7 +1497,7 @@ ENTRYPOINT void draw_romanboy(ModeInfo *mi)
if (!pp->glx_context)
return;
- glXMakeCurrent(display,window,*(pp->glx_context));
+ glXMakeCurrent(display, window, *pp->glx_context);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
@@ -1524,14 +1524,15 @@ ENTRYPOINT void free_romanboy(ModeInfo *mi)
{
romanboystruct *pp = &romanboy[MI_SCREEN(mi)];
- if (pp->pp)
- (void) free((void *)pp->pp);
- if (pp->pn)
- (void) free((void *)pp->pn);
- if (pp->col)
- (void) free((void *)pp->col);
- if (pp->tex)
- (void) free((void *)pp->tex);
+ if (!pp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
+
+ if (pp->pp) free(pp->pp);
+ if (pp->pn) free(pp->pn);
+ if (pp->col) free(pp->col);
+ if (pp->tex) free(pp->tex);
+ gltrackball_free (pp->trackball);
+ if (pp->tex_name) glDeleteTextures (1, &pp->tex_name);
}
#ifndef STANDALONE
@@ -1542,7 +1543,7 @@ ENTRYPOINT void change_romanboy(ModeInfo *mi)
if (!pp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(pp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
init(mi);
}
#endif /* !STANDALONE */
diff --git a/hacks/glx/rubik.c b/hacks/glx/rubik.c
index ed06645..e0182cf 100644
--- a/hacks/glx/rubik.c
+++ b/hacks/glx/rubik.c
@@ -1460,7 +1460,7 @@ rotateFace(rubikstruct * rp, int face, int direction)
/* DrawSquare(face, position); */
}
if (faceLoc != NULL)
- (void) free((void *) faceLoc);
+ free(faceLoc);
return True;
}
@@ -1728,7 +1728,7 @@ shuffle(ModeInfo * mi)
for (face = 0; face < MAXFACES; face++) {
if (rp->cubeLoc[face] != NULL)
- (void) free((void *) rp->cubeLoc[face]);
+ free(rp->cubeLoc[face]);
if ((rp->cubeLoc[face] = (RubikLoc *) malloc(sizeFace(rp, face) *
sizeof (RubikLoc))) == NULL) {
return False;
@@ -1740,7 +1740,7 @@ shuffle(ModeInfo * mi)
}
for (i = 0; i < MAXORIENT; i++) {
if (rp->rowLoc[i] != NULL)
- (void) free((void *) rp->rowLoc[i]);
+ free(rp->rowLoc[i]);
/* The following is reused so make it the biggest size */
if ((rp->rowLoc[i] = (RubikLoc *) malloc(MAXMAXSIZE *
sizeof (RubikLoc))) == NULL) {
@@ -1750,7 +1750,7 @@ shuffle(ModeInfo * mi)
rp->storedmoves = MI_COUNT(mi);
if (rp->storedmoves < 0) {
if (rp->moves != NULL)
- (void) free((void *) rp->moves);
+ free(rp->moves);
rp->moves = (RubikMove *) NULL;
rp->storedmoves = NRAND(-rp->storedmoves) + 1;
}
@@ -1880,18 +1880,23 @@ free_rubik(ModeInfo *mi)
rubikstruct *rp = &rubik[MI_SCREEN(mi)];
int i;
+ if (!rp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *rp->glx_context);
+
+ if (rp->trackball) gltrackball_free (rp->trackball);
+
for (i = 0; i < MAXFACES; i++)
if (rp->cubeLoc[i] != NULL) {
- (void) free((void *) rp->cubeLoc[i]);
+ free(rp->cubeLoc[i]);
rp->cubeLoc[i] = (RubikLoc *) NULL;
}
for (i = 0; i < MAXORIENT; i++)
if (rp->rowLoc[i] != NULL) {
- (void) free((void *) rp->rowLoc[i]);
+ free(rp->rowLoc[i]);
rp->rowLoc[i] = (RubikLoc *) NULL;
}
if (rp->moves != NULL) {
- (void) free((void *) rp->moves);
+ free(rp->moves);
rp->moves = (RubikMove *) NULL;
}
}
@@ -1945,7 +1950,7 @@ draw_rubik(ModeInfo * mi)
return;
mi->polygon_count = 0;
- glXMakeCurrent(display, window, *(rp->glx_context));
+ glXMakeCurrent(display, window, *rp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
diff --git a/hacks/glx/rubikblocks.c b/hacks/glx/rubikblocks.c
index fadeb0d..6082f09 100644
--- a/hacks/glx/rubikblocks.c
+++ b/hacks/glx/rubikblocks.c
@@ -22,7 +22,6 @@
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_rubikblocks 0
# define release_rubikblocks 0
#include "xlockmore.h"
#include "rotator.h"
@@ -592,7 +591,7 @@ draw_rubikblocks(ModeInfo * mi)
MI_IS_DRAWN(mi) = True;
if (!cp->glx_context) return;
mi->polygon_count = 0;
- glXMakeCurrent(display, window, *(cp->glx_context));
+ glXMakeCurrent(display, window, *cp->glx_context);
if (!draw_main(mi, cp))
{
MI_ABORT(mi);
@@ -609,7 +608,7 @@ change_rubikblocks(ModeInfo * mi)
{
rubikblocks_conf *cp = &rubikblocks[MI_SCREEN(mi)];
if (!cp->glx_context) return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
init_gl(mi);
}
#endif /* !STANDALONE */
@@ -628,6 +627,17 @@ rubikblocks_handle_event (ModeInfo *mi, XEvent *event)
}
+ENTRYPOINT void
+free_rubikblocks (ModeInfo *mi)
+{
+ rubikblocks_conf *cp = &rubikblocks[MI_SCREEN(mi)];
+ if (!cp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
+ if (cp->trackball) gltrackball_free (cp->trackball);
+ glDeleteLists (cp->list_base, 27);
+}
+
+
XSCREENSAVER_MODULE ("RubikBlocks", rubikblocks)
#endif
diff --git a/hacks/glx/sballs.c b/hacks/glx/sballs.c
index 6cd95f5..e0fccd3 100644
--- a/hacks/glx/sballs.c
+++ b/hacks/glx/sballs.c
@@ -724,7 +724,7 @@ ENTRYPOINT void draw_sballs(ModeInfo * mi)
if (!sb->glx_context)
return;
- glXMakeCurrent(display, window, *(sb->glx_context));
+ glXMakeCurrent(display, window, *sb->glx_context);
Draw(mi);
#ifndef STANDALONE
Reshape(mi); /* xlock mode */
@@ -747,21 +747,23 @@ ENTRYPOINT void draw_sballs(ModeInfo * mi)
ENTRYPOINT void free_sballs(ModeInfo * mi)
{
sballsstruct *sb = &sballs[MI_SCREEN(mi)];
- if (sb->glx_context)
+
+ if (!sb->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *sb->glx_context);
+
+ gltrackball_free (sb->trackball);
+
+ if (sb->btexture)
{
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sb->glx_context));
- if (sb->btexture)
- {
- glDeleteTextures(1,&sb->backid);
- XDestroyImage(sb->btexture);
- sb->btexture = 0;
- }
- if (sb->ftexture)
- {
- glDeleteTextures(1,&sb->faceid);
- XDestroyImage(sb->ftexture);
- sb->ftexture = 0;
- }
+ glDeleteTextures(1,&sb->backid);
+ XDestroyImage(sb->btexture);
+ sb->btexture = 0;
+ }
+ if (sb->ftexture)
+ {
+ glDeleteTextures(1,&sb->faceid);
+ XDestroyImage(sb->ftexture);
+ sb->ftexture = 0;
}
}
@@ -813,7 +815,7 @@ ENTRYPOINT void change_sballs(ModeInfo * mi)
do_texture ? "on" : "off"
);
}
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sb->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sb->glx_context);
}
#endif /* !STANDALONE */
diff --git a/hacks/glx/sierpinski3d.c b/hacks/glx/sierpinski3d.c
index 0317299..3740f22 100644
--- a/hacks/glx/sierpinski3d.c
+++ b/hacks/glx/sierpinski3d.c
@@ -550,7 +550,7 @@ draw_gasket(ModeInfo * mi)
if (max_depth > 10)
max_depth = 10;
- glXMakeCurrent(display, window, *(gp->glx_context));
+ glXMakeCurrent(display, window, *gp->glx_context);
draw(mi);
if (mi->fps_p) do_fps (mi);
glFinish();
@@ -562,16 +562,17 @@ free_gasket(ModeInfo * mi)
{
gasketstruct *gp = &gasket[MI_SCREEN(mi)];
- if (gp->glx_context)
- {
- /* Display lists MUST be freed while their glXContext is current. */
- glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
+ if (!gp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
- if (glIsList(gp->gasket0)) glDeleteLists(gp->gasket0, 1);
- if (glIsList(gp->gasket1)) glDeleteLists(gp->gasket1, 1);
- if (glIsList(gp->gasket2)) glDeleteLists(gp->gasket2, 1);
- if (glIsList(gp->gasket3)) glDeleteLists(gp->gasket3, 1);
- }
+ if (gp->trackball) gltrackball_free (gp->trackball);
+ if (gp->rot) free_rotator (gp->rot);
+ if (gp->colors) free (gp->colors);
+
+ if (glIsList(gp->gasket0)) glDeleteLists(gp->gasket0, 1);
+ if (glIsList(gp->gasket1)) glDeleteLists(gp->gasket1, 1);
+ if (glIsList(gp->gasket2)) glDeleteLists(gp->gasket2, 1);
+ if (glIsList(gp->gasket3)) glDeleteLists(gp->gasket3, 1);
}
XSCREENSAVER_MODULE_2 ("Sierpinski3D", sierpinski3d, gasket)
diff --git a/hacks/glx/skytentacles.c b/hacks/glx/skytentacles.c
index 1061482..272a447 100644
--- a/hacks/glx/skytentacles.c
+++ b/hacks/glx/skytentacles.c
@@ -14,7 +14,6 @@
"*showFPS: False \n" \
"*wireframe: False \n" \
-# define free_tentacles 0
# define release_tentacles 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -90,7 +89,6 @@ typedef struct {
GLuint texid;
Bool left_p;
-
} tentacles_configuration;
@@ -994,7 +992,7 @@ draw_tentacles (ModeInfo *mi)
if (!tc->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tc->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tc->glx_context);
glShadeModel(GL_SMOOTH);
@@ -1098,6 +1096,30 @@ draw_tentacles (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_tentacles (ModeInfo *mi)
+{
+ tentacles_configuration *tc = &tcs[MI_SCREEN(mi)];
+ int i, j;
+
+ if (!tc->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tc->glx_context);
+
+ for (i = 0; i < tc->ntentacles; i++) {
+ for (j = 0; j < tc->tentacles[i]->nsegments; j++)
+ free_rotator (tc->tentacles[i]->segments[j].rot);
+ free (tc->tentacles[i]->segments);
+ free (tc->tentacles[i]);
+ }
+ if (tc->tentacles) free (tc->tentacles);
+ if (tc->torus_points) free (tc->torus_points);
+ if (tc->torus_normals) free (tc->torus_normals);
+ if (tc->texture) XDestroyImage (tc->texture);
+ if (tc->trackball) gltrackball_free (tc->trackball);
+ if (tc->texid) glDeleteTextures (1, &tc->texid);
+}
+
XSCREENSAVER_MODULE_2 ("SkyTentacles", skytentacles, tentacles)
#endif /* USE_GL */
diff --git a/hacks/glx/sonar-icmp.c b/hacks/glx/sonar-icmp.c
index 3464c37..862f358 100644
--- a/hacks/glx/sonar-icmp.c
+++ b/hacks/glx/sonar-icmp.c
@@ -758,7 +758,9 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
mask_width (mask),
mask);
if (in2.s_addr == 0x0100007f || /* 127.0.0.1 in network order */
+ ((in2.s_addr & 0x000000ff) == 0x7f) || /* 127.0.0.0/24 */
mask == 0)
+ /* Assume all 127 addresses are loopback, not just 127.0.0.1. */
continue;
/* At least on the AT&T 3G network, pinging either of the two
@@ -780,6 +782,10 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
in = in2;
subnet_width = mask_width (mask);
+
+ /* Take the first non-loopback network: prefer en0 over en1. */
+ if (in.s_addr && subnet_width)
+ break;
}
if (in.s_addr)
@@ -980,6 +986,8 @@ send_ping (ping_data *pd, const sonar_bogie *b)
perror(buf);
#endif
}
+
+ free (packet);
}
/* signal handler */
diff --git a/hacks/glx/sonar.c b/hacks/glx/sonar.c
index c4ea949..ddbb79f 100644
--- a/hacks/glx/sonar.c
+++ b/hacks/glx/sonar.c
@@ -623,17 +623,20 @@ static void
update_sensor_data (sonar_configuration *sp)
{
sonar_bogie *new_list = sp->ssd->scan_cb (sp->ssd);
- sonar_bogie *b2;
+ sonar_bogie *b2, *next;
/* If a bogie exists in 'new_list' but not 'pending', add it.
If a bogie exists in both, update it in 'pending'.
*/
- for (b2 = new_list; b2; b2 = b2->next)
+ for (b2 = new_list, next = b2 ? b2->next : 0;
+ b2;
+ b2 = next, next = next ? next->next : 0)
{
if (debug_p > 2)
fprintf (stderr, "%s: updated: %s (%5.2f %5.2f %5.2f)\n",
progname, b2->name, b2->r, b2->th, b2->ttl);
copy_and_insert_bogie (sp->ssd, b2, &sp->pending);
+ sonar_free_bogie (sp->ssd, b2);
}
if (debug_p > 2) fprintf (stderr, "\n");
}
@@ -1041,7 +1044,7 @@ draw_sonar (ModeInfo *mi)
if (!sp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -1227,13 +1230,16 @@ draw_sonar (ModeInfo *mi)
ENTRYPOINT void
free_sonar (ModeInfo *mi)
{
-#if 0
sonar_configuration *sp = &sps[MI_SCREEN(mi)];
sonar_bogie *b = sp->displayed;
+
+ if (!sp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+
while (b)
{
sonar_bogie *next = b->next;
- free_bogie (sp->ssd, b);
+ sonar_free_bogie (sp->ssd, b);
b = next;
}
sp->displayed = 0;
@@ -1242,15 +1248,24 @@ free_sonar (ModeInfo *mi)
while (b)
{
sonar_bogie *next = b->next;
- free_bogie (sp->ssd, b);
+ sonar_free_bogie (sp->ssd, b);
b = next;
}
sp->pending = 0;
- sp->ssd->free_data_cb (sp->ssd, sp->ssd->closure);
- free (sp->ssd);
- sp->ssd = 0;
-#endif
+ if (sp->ssd) {
+ sp->ssd->free_data_cb (sp->ssd, sp->ssd->closure);
+ free (sp->ssd);
+ sp->ssd = 0;
+ }
+
+ if (sp->trackball) gltrackball_free (sp->trackball);
+ if (sp->rot) free_rotator (sp->rot);
+ if (sp->texfont) free_texture_font (sp->texfont);
+ glDeleteLists (sp->table_list, 1);
+ glDeleteLists (sp->screen_list, 1);
+ glDeleteLists (sp->grid_list, 1);
+ glDeleteLists (sp->sweep_list, 1);
}
XSCREENSAVER_MODULE ("Sonar", sonar)
diff --git a/hacks/glx/spheremonics.c b/hacks/glx/spheremonics.c
index 9cefbf3..cf01c7d 100644
--- a/hacks/glx/spheremonics.c
+++ b/hacks/glx/spheremonics.c
@@ -66,7 +66,6 @@
"*suppressRotationAnimation: True\n" \
"*labelfont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n"
-# define free_spheremonics 0
# define release_spheremonics 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -796,7 +795,7 @@ draw_spheremonics (ModeInfo *mi)
if (!cc->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
gl_init(mi);
@@ -877,6 +876,21 @@ draw_spheremonics (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_spheremonics (ModeInfo *mi)
+{
+ spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)];
+ if (!cc->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
+ if (cc->colors) free (cc->colors);
+ if (cc->trackball) gltrackball_free (cc->trackball);
+ if (cc->rot) free_rotator (cc->rot);
+ if (cc->font_data) free_texture_font (cc->font_data);
+ if (glIsList(cc->dlist)) glDeleteLists(cc->dlist, 1);
+ if (glIsList(cc->dlist2)) glDeleteLists(cc->dlist2, 1);
+}
+
XSCREENSAVER_MODULE ("Spheremonics", spheremonics)
#endif /* USE_GL */
diff --git a/hacks/glx/splitflap.c b/hacks/glx/splitflap.c
index b84a359..8cc8eb4 100644
--- a/hacks/glx/splitflap.c
+++ b/hacks/glx/splitflap.c
@@ -283,6 +283,7 @@ parse_color (ModeInfo *mi, char *key, GLfloat color[4])
key, string);
exit (1);
}
+ free (string);
color[0] = xcolor.red / 65536.0;
color[1] = xcolor.green / 65536.0;
@@ -1319,7 +1320,7 @@ draw_splitflap (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -1397,10 +1398,27 @@ ENTRYPOINT void
free_splitflap (ModeInfo *mi)
{
splitflap_configuration *bp = &bps[MI_SCREEN(mi)];
- if (bp->tc)
- textclient_close (bp->tc);
- bp->tc = 0;
- /* #### bp->texinfo */
+ int i;
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+ if (bp->flappers) free (bp->flappers);
+ if (bp->tc) textclient_close (bp->tc);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->rot2) free_rotator (bp->rot2);
+ if (bp->font_data) free_texture_font (bp->font_data);
+ if (bp->dlists) {
+ for (i = 0; i < countof(all_objs); i++)
+ if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+ free (bp->dlists);
+ }
+ if (bp->texinfo) {
+ for (i = 0; i < bp->texinfo_size; i++)
+ if (bp->texinfo[i].texid) glDeleteTextures (1, &bp->texinfo[i].texid);
+ free (bp->texinfo);
+ }
}
XSCREENSAVER_MODULE ("SplitFlap", splitflap)
diff --git a/hacks/glx/splodesic.c b/hacks/glx/splodesic.c
index 2823133..a68e992 100644
--- a/hacks/glx/splodesic.c
+++ b/hacks/glx/splodesic.c
@@ -575,7 +575,7 @@ draw_splodesic (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glShadeModel(GL_SMOOTH);
@@ -627,12 +627,19 @@ ENTRYPOINT void
free_splodesic (ModeInfo *mi)
{
splodesic_configuration *bp = &bps[MI_SCREEN(mi)];
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
while (bp->triangles)
{
triangle *t = bp->triangles->next;
free (bp->triangles);
bp->triangles = t;
}
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->colors) free (bp->colors);
}
XSCREENSAVER_MODULE ("Splodesic", splodesic)
diff --git a/hacks/glx/sproingies.c b/hacks/glx/sproingies.c
index 1860b11..c0d5c9b 100644
--- a/hacks/glx/sproingies.c
+++ b/hacks/glx/sproingies.c
@@ -768,7 +768,7 @@ CleanupSproingies(sp_instance *si)
glDeleteLists(si->TopsSides, 2);
}
if (si->positions) {
- (void) free((void *) (si->positions));
+ free((si->positions));
si->positions = NULL;
}
}
diff --git a/hacks/glx/sproingiewrap.c b/hacks/glx/sproingiewrap.c
index 7089f9c..c4eb759 100644
--- a/hacks/glx/sproingiewrap.c
+++ b/hacks/glx/sproingiewrap.c
@@ -181,7 +181,7 @@ draw_sproingies (ModeInfo * mi)
return;
glDrawBuffer(GL_BACK);
- glXMakeCurrent(display, window, *(sp->glx_context));
+ glXMakeCurrent(display, window, *sp->glx_context);
glPushMatrix();
glRotatef(current_device_rotation(), 0, 0, 1);
@@ -216,12 +216,9 @@ ENTRYPOINT void
free_sproingies (ModeInfo * mi)
{
sproingiesstruct *sp = &sproingies[MI_SCREEN(mi)];
-
- if (sp->glx_context) {
-
- glXMakeCurrent(MI_DISPLAY(mi), sp->window, *(sp->glx_context));
- CleanupSproingies(&sp->si);
- }
+ if (!sp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+ CleanupSproingies(&sp->si);
}
XSCREENSAVER_MODULE ("Sproingies", sproingies)
diff --git a/hacks/glx/stairs.c b/hacks/glx/stairs.c
index 7b6fbe2..faf9a37 100644
--- a/hacks/glx/stairs.c
+++ b/hacks/glx/stairs.c
@@ -472,7 +472,7 @@ draw_stairs (ModeInfo * mi)
if (!sp->glx_context)
return;
- glXMakeCurrent(display, window, *(sp->glx_context));
+ glXMakeCurrent(display, window, *sp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -570,7 +570,7 @@ change_stairs (ModeInfo * mi)
if (!sp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
pinit();
}
#endif /* !STANDALONE */
@@ -579,9 +579,10 @@ ENTRYPOINT void
free_stairs (ModeInfo * mi)
{
stairsstruct *sp = &stairs[MI_SCREEN(mi)];
- if (glIsList(sp->objects)) {
- glDeleteLists(sp->objects, 1);
- }
+ if (!sp->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+ if (glIsList(sp->objects)) glDeleteLists(sp->objects, 1);
+ if (sp->trackball) gltrackball_free (sp->trackball);
}
XSCREENSAVER_MODULE ("Stairs", stairs)
diff --git a/hacks/glx/starwars.c b/hacks/glx/starwars.c
index 1efcd15..bccd568 100644
--- a/hacks/glx/starwars.c
+++ b/hacks/glx/starwars.c
@@ -896,7 +896,7 @@ draw_sws (ModeInfo *mi)
return;
glDrawBuffer (GL_BACK);
- glXMakeCurrent (dpy, window, *(sc->glx_context));
+ glXMakeCurrent (dpy, window, *sc->glx_context);
glClear (GL_COLOR_BUFFER_BIT);
@@ -1057,10 +1057,18 @@ ENTRYPOINT void
free_sws (ModeInfo *mi)
{
sws_configuration *sc = &scs[MI_SCREEN(mi)];
- if (sc->tc)
- textclient_close (sc->tc);
-
- /* #### there's more to free here */
+ int i;
+ if (!sc->glx_context) return;
+ glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *sc->glx_context);
+ if (sc->tc) textclient_close (sc->tc);
+ if (sc->texfont) free_texture_font (sc->texfont);
+ if (sc->buf) free (sc->buf);
+ if (sc->line_widths) free (sc->line_widths);
+ for (i = 0; i < sc->total_lines; i++)
+ if (sc->lines[i]) free (sc->lines[i]);
+ if (sc->lines) free (sc->lines);
+ if (glIsList(sc->star_list)) glDeleteLists(sc->star_list, 1);
+ if (glIsList(sc->text_list)) glDeleteLists(sc->text_list, 1);
}
diff --git a/hacks/glx/stonerview.c b/hacks/glx/stonerview.c
index 880ef01..ff4e131 100644
--- a/hacks/glx/stonerview.c
+++ b/hacks/glx/stonerview.c
@@ -101,7 +101,7 @@ draw_stonerview (ModeInfo *mi)
{
stonerview_configuration *bp = &bps[MI_SCREEN(mi)];
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glPushMatrix ();
glRotatef( current_device_rotation(), 0, 0, 1);
@@ -132,6 +132,9 @@ ENTRYPOINT void
free_stonerview (ModeInfo *mi)
{
stonerview_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->trackball) gltrackball_free (bp->trackball);
if (bp->st)
stonerview_win_release (bp->st);
}
diff --git a/hacks/glx/superquadrics.c b/hacks/glx/superquadrics.c
index 3c08335..69dc920 100644
--- a/hacks/glx/superquadrics.c
+++ b/hacks/glx/superquadrics.c
@@ -78,7 +78,6 @@ static const char sccsid[] = "@(#)superquadrics.c 4.07 97/11/24 xlockmore";
"*wireframe: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_superquadrics 0
# define release_superquadrics 0
# define superquadrics_handle_event 0
# include "xlockmore.h" /* from the xscreensaver distribution */
@@ -776,7 +775,7 @@ draw_superquadrics(ModeInfo * mi)
if (!sp->glx_context)
return;
- glXMakeCurrent(display, window, *(sp->glx_context));
+ glXMakeCurrent(display, window, *sp->glx_context);
mi->polygon_count = NextSuperquadricDisplay(mi);
@@ -800,6 +799,12 @@ reshape_superquadrics(ModeInfo * mi, int width, int height)
}
+ENTRYPOINT void
+free_superquadrics(ModeInfo * mi)
+{
+ /* nothing to do */
+}
+
#endif
/* End of superquadrics.c */
diff --git a/hacks/glx/surfaces.c b/hacks/glx/surfaces.c
index 4c79740..26439d5 100644
--- a/hacks/glx/surfaces.c
+++ b/hacks/glx/surfaces.c
@@ -46,7 +46,6 @@
"*showFPS: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_surface 0
# define release_surface 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
@@ -429,7 +428,7 @@ ENTRYPOINT void reshape_surface(ModeInfo *mi, int width, int height)
h = height / (GLfloat) width;
}
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
glViewport(0, y, (GLint) width, (GLint) height);
glMatrixMode(GL_PROJECTION);
@@ -634,7 +633,7 @@ ENTRYPOINT void draw_surface(ModeInfo * mi)
glDrawBuffer(GL_BACK);
- glXMakeCurrent(display, window, *(sp->glx_context));
+ glXMakeCurrent(display, window, *sp->glx_context);
draw(mi);
if (mi->fps_p)
do_fps(mi);
@@ -643,6 +642,16 @@ ENTRYPOINT void draw_surface(ModeInfo * mi)
}
+ENTRYPOINT void free_surface(ModeInfo * mi)
+{
+ surfacestruct *sp = &surface[MI_SCREEN(mi)];
+ if (!sp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+ gltrackball_free (sp->trackball);
+ free_rotator (sp->rot);
+}
+
+
XSCREENSAVER_MODULE_2("Surfaces", surfaces, surface)
#endif
diff --git a/hacks/glx/tangram.c b/hacks/glx/tangram.c
index c250f54..c90d611 100644
--- a/hacks/glx/tangram.c
+++ b/hacks/glx/tangram.c
@@ -22,7 +22,6 @@
"*titleFont2: -*-helvetica-medium-r-normal-*-*-120-*-*-*-*-*-*\n" \
"*titleFont3: -*-helvetica-medium-r-normal-*-*-80-*-*-*-*-*-*\n" \
-# define free_tangram 0
# define release_tangram 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -967,7 +966,7 @@ ENTRYPOINT void draw_tangram(ModeInfo * mi)
if (! tp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tp->glx_context);
ls[small_triangle1] = &tp->tsm1;
ls[small_triangle2] = &tp->tsm2;
@@ -1060,7 +1059,16 @@ tangram_handle_event (ModeInfo *mi, XEvent *event)
return False;
}
-
+ENTRYPOINT void
+free_tangram (ModeInfo *mi)
+{
+ tangram_configuration *tp = &tps[MI_SCREEN(mi)];
+ if (!tp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tp->glx_context);
+ if (tp->font1_data) free_texture_font (tp->font1_data);
+ if (tp->font2_data) free_texture_font (tp->font2_data);
+ if (tp->font3_data) free_texture_font (tp->font3_data);
+}
XSCREENSAVER_MODULE ("Tangram", tangram)
diff --git a/hacks/glx/texfont.c b/hacks/glx/texfont.c
index 540db9f..f879d50 100644
--- a/hacks/glx/texfont.c
+++ b/hacks/glx/texfont.c
@@ -1,4 +1,4 @@
-/* texfonts, Copyright (c) 2005-2017 Jamie Zawinski <jwz@jwz.org>
+/* texfonts, Copyright (c) 2005-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -952,6 +952,7 @@ free_texture_font (texture_font_data *data)
{
texfont_cache *next = data->cache->next;
glDeleteTextures (1, &data->cache->texid);
+ free (data->cache->string);
free (data->cache);
data->cache = next;
}
diff --git a/hacks/glx/timetunnel.c b/hacks/glx/timetunnel.c
index 723d04d..2dd83be 100644
--- a/hacks/glx/timetunnel.c
+++ b/hacks/glx/timetunnel.c
@@ -23,7 +23,6 @@
-# define free_tunnel 0
# define release_tunnel 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -1061,7 +1060,7 @@ init_tunnel (ModeInfo *mi)
tc->end_time = end;
/* reset animation knots, effect 0 not defined. */
- tc->effects = malloc(sizeof(effect_t) * ( tc->num_effects + 1));
+ tc->effects = calloc(sizeof(effect_t),tc->num_effects + 1);
for ( i = 1; i <= tc->num_effects ; i++)
init_effects(&tc->effects[i], i);
@@ -1159,7 +1158,7 @@ draw_tunnel (ModeInfo *mi)
if (!tc->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tc->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tc->glx_context);
glShadeModel(GL_SMOOTH);
@@ -1235,6 +1234,29 @@ draw_tunnel (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_tunnel (ModeInfo *mi)
+{
+ tunnel_configuration *tc = &tconf[MI_SCREEN(mi)];
+ int i;
+ if (!tc->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tc->glx_context);
+ if (tc->trackball) gltrackball_free (tc->trackball);
+ if (tc->rot) free_rotator (tc->rot);
+ if (tc->texshift) free (tc->texshift);
+ if (tc->effects) {
+ for (i = 0; i < tc->num_effects; i++) {
+ if (tc->effects[i].knots) free (tc->effects[i].knots);
+ if (tc->effects[i].state) free (tc->effects[i].state);
+ }
+ free (tc->effects);
+ }
+ if (glIsList(tc->cyllist)) glDeleteLists(tc->cyllist, 1);
+ if (glIsList(tc->diamondlist)) glDeleteLists(tc->diamondlist, 1);
+ glDeleteTextures (MAX_TEXTURE, tc->texture_binds);
+}
+
XSCREENSAVER_MODULE_2 ("TimeTunnel", timetunnel, tunnel)
#endif /* USE_GL */
diff --git a/hacks/glx/topblock.c b/hacks/glx/topblock.c
index 9161d38..59a463f 100644
--- a/hacks/glx/topblock.c
+++ b/hacks/glx/topblock.c
@@ -179,13 +179,20 @@ ENTRYPOINT void
free_topBlock(ModeInfo *mi)
{
topBlockSTATE *tb = &tbs[MI_SCREEN(mi)];
- NODE *llCurrent, *llOld;
- llCurrent = tb->blockNodeRoot;
- while (llCurrent != NULL) {
- llOld = llCurrent;
- llCurrent = llCurrent->next;
- free(llOld);
- }
+ NODE *llCurrent, *llOld;
+
+ if (!tb->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tb->glx_context);
+
+ llCurrent = tb->blockNodeRoot;
+ while (llCurrent != NULL) {
+ llOld = llCurrent;
+ llCurrent = llCurrent->next;
+ free(llOld);
+ }
+ if (tb->trackball) gltrackball_free (tb->trackball);
+ if (glIsList(tb->carpet)) glDeleteLists(tb->carpet, 1);
+ if (glIsList(tb->block)) glDeleteLists(tb->block, 1);
}
/* setup */
@@ -309,7 +316,7 @@ draw_topBlock (ModeInfo *mi)
if (!tb->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tb->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tb->glx_context);
mi->polygon_count = 0;
generateNewBlock(mi);
diff --git a/hacks/glx/tronbit.c b/hacks/glx/tronbit.c
index b79309c..7354355 100644
--- a/hacks/glx/tronbit.c
+++ b/hacks/glx/tronbit.c
@@ -14,7 +14,6 @@
"*showFPS: False \n" \
"*wireframe: False \n"
-# define free_bit 0
# define release_bit 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -456,7 +455,7 @@ draw_bit (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -531,6 +530,23 @@ draw_bit (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_bit (ModeInfo *mi)
+{
+ bit_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ for (i = 0; i < countof(bp->dlists); i++)
+ if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+
+}
+
XSCREENSAVER_MODULE_2 ("TronBit", tronbit, bit)
#endif /* USE_GL */
diff --git a/hacks/glx/unicrud.c b/hacks/glx/unicrud.c
index 7942252..3ddd480 100644
--- a/hacks/glx/unicrud.c
+++ b/hacks/glx/unicrud.c
@@ -15,7 +15,6 @@
"*titleFont: -*-helvetica-bold-r-normal-*-*-180-*-*-*-*-*-*\n" \
"*font: -*-helvetica-bold-r-normal-*-*-2400-*-*-*-*-iso10646-1\n" \
-# define free_unicrud 0
# define release_unicrud 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -879,7 +878,7 @@ draw_unicrud (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glShadeModel (GL_FLAT);
glEnable (GL_NORMALIZE);
@@ -956,6 +955,19 @@ draw_unicrud (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_unicrud (ModeInfo *mi)
+{
+ unicrud_configuration *bp = &bps[MI_SCREEN(mi)];
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ if (bp->rot) free_rotator (bp->rot);
+ if (bp->title_font) free_texture_font (bp->title_font);
+ if (bp->char_font) free_texture_font (bp->char_font);
+}
+
XSCREENSAVER_MODULE_2 ("Unicrud", unicrud, unicrud)
#endif /* USE_GL */
diff --git a/hacks/glx/unknownpleasures.c b/hacks/glx/unknownpleasures.c
index 9802566..a52819f 100644
--- a/hacks/glx/unknownpleasures.c
+++ b/hacks/glx/unknownpleasures.c
@@ -1,4 +1,4 @@
-/* unknownpleasures, Copyright (c) 2013-2014 Jamie Zawinski <jwz@jwz.org>
+/* unknownpleasures, Copyright (c) 2013-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -8,40 +8,48 @@
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*
- * Translated from Mathematica code by Archery:
- * http://intothecontinuum.tumblr.com/post/27443100682/in-july-1967-astronomers-at-the-cavendish
+ * A very particular waterfall chart.
*
* Interestingly, the original image is copyright-free:
* http://adamcap.com/2011/05/19/history-of-joy-division-unknown-pleasures-album-art/
+ * https://blogs.scientificamerican.com/sa-visual/pop-culture-pulsar-origin-story-of-joy-division-s-unknown-pleasures-album-cover-video/
* https://en.wikipedia.org/wiki/Unknown_Pleasures
*
- * TODO:
- *
- * - Performance is not great. Spending half our time in compute_line()
- * and half our time in glEnd(). It's a vast number of cos/pow calls,
- * and a vast number of polygons. I'm not sure how much could be cached.
+ * "Eighty successive periods of the first pulsar observed, CP1919
+ * (Cambridge pulsar at 19 hours 19 minutes right ascension), are stacked
+ * on top of one another using the average period of 1.33730 seconds in
+ * this computer-generated illustration produced at the Arecibo Radio
+ * Observatory in Puerto Rico. Athough the leading edges of the radio
+ * pulses occur within a few thousandths of a second of the predicted
+ * times, the shape of the pulses is quite irregular. Some of this
+ * irregularity in radio reception is caused by the effects of
+ * transmission through the interstellar medium. The average pulse width
+ * is less than 50 thousandths of a second."
*
- * - There's too low periodicity vertically on the screen.
+ * TODO:
*
- * - There's too low periodicity in time.
+ * - Load images and feed them line by line into the plotter, so it scrolls.
*
- * - Could take advantage of time periodicity for caching: just save every
- * poly for an N second loop. That would be a huge amount of RAM though.
+ * - Same but use the image as a mask against the random graph data.
*
- * - At low resolutions, GL_POLYGON_OFFSET_FILL seems to work poorly
- * and the lines get blocky.
+ * - Take a function generator program as a command line argument:
+ * read lines of N float values from it, interpolate to full width.
*/
+#define DEF_ORTHO "True"
+#define DEF_SPEED "1.0"
+#define DEF_RESOLUTION "100"
+#define DEF_AMPLITUDE "0.13"
+#define DEF_NOISE "1.0"
+#define DEF_ASPECT "1.9"
+#define DEF_BUZZ "False"
#define DEFAULTS "*delay: 30000 \n" \
"*count: 80 \n" \
- "*resolution: 100 \n" \
- "*ortho: True \n" \
"*showFPS: False \n" \
"*wireframe: False \n" \
"*geometry: =800x800" "\n" \
-# define free_unk 0
# define release_unk 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -53,7 +61,15 @@
#ifdef USE_GL /* whole file */
-#define DEF_SPEED "1.0"
+#undef DEBUG
+
+Bool ortho_arg;
+GLfloat speed_arg;
+int resolution_arg;
+GLfloat amplitude_arg;
+GLfloat noise_arg;
+GLfloat aspect_arg;
+Bool buzz_arg;
typedef struct {
@@ -61,38 +77,91 @@ typedef struct {
trackball_state *trackball;
Bool button_down_p;
Bool orthop;
- GLfloat resolution;
- int count;
- GLfloat t;
+ double speed, tick;
+ int resolution; /* X points */
+ int count; /* Y lines */
+ GLfloat amplitude; /* Z height */
+ int frames; /* Number of renders of each line, for buzzing */
+ GLfloat noise; /* Number of peaks in each line */
+ GLfloat aspect; /* Shape of the plot */
+ GLuint base; /* Display list for back */
+ GLuint *lines; /* Display lists for each edge * face * frame */
+ GLfloat *heights; /* Animated elevation / alpha of each line */
+ GLfloat fg[4], bg[4]; /* Colors */
} unk_configuration;
static unk_configuration *bps = NULL;
-static GLfloat speed;
-
static XrmOptionDescRec opts[] = {
{ "-speed", ".speed", XrmoptionSepArg, 0 },
{ "-resolution", ".resolution", XrmoptionSepArg, 0 },
+ { "-amplitude", ".amplitude", XrmoptionSepArg, 0 },
+ { "-noise", ".noise", XrmoptionSepArg, 0 },
+ { "-aspect", ".aspect", XrmoptionSepArg, 0 },
{ "-ortho", ".ortho", XrmoptionNoArg, "True" },
{ "-no-ortho", ".ortho", XrmoptionNoArg, "False" },
+ { "-buzz", ".buzz", XrmoptionNoArg, "True" },
+ { "-no-buzz", ".buzz", XrmoptionNoArg, "False" },
};
static argtype vars[] = {
- {&speed, "speed", "Speed", DEF_SPEED, t_Float},
+ {&ortho_arg, "ortho", "Ortho", DEF_ORTHO, t_Bool},
+ {&speed_arg, "speed", "Speed", DEF_SPEED, t_Float},
+ {&resolution_arg, "resolution", "Resolution", DEF_RESOLUTION, t_Int},
+ {&amplitude_arg, "amplitude", "Amplitude", DEF_AMPLITUDE, t_Float},
+ {&noise_arg, "noise", "Noise", DEF_NOISE, t_Float},
+ {&aspect_arg, "aspect", "Aspect", DEF_ASPECT, t_Float},
+ {&buzz_arg, "buzz", "Buzz", DEF_BUZZ, t_Bool},
};
ENTRYPOINT ModeSpecOpt unk_opts = {countof(opts), opts, countof(vars), vars, NULL};
-/* Window management, etc
+/* Returns the current time in seconds as a double.
*/
+static double
+double_time (void)
+{
+ struct timeval now;
+# ifdef GETTIMEOFDAY_TWO_ARGS
+ struct timezone tzp;
+ gettimeofday(&now, &tzp);
+# else
+ gettimeofday(&now);
+# endif
+
+ return (now.tv_sec + ((double) now.tv_usec * 0.000001));
+}
+
+
+static void
+parse_color (ModeInfo *mi, char *res, char *class, GLfloat *a)
+{
+ XColor c;
+ char *s = get_string_resource(mi->dpy, res, class);
+ if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c))
+ {
+ fprintf (stderr, "%s: can't parse %s color %s", progname, res, s);
+ exit (1);
+ }
+ if (s) free (s);
+ a[0] = c.red / 65536.0;
+ a[1] = c.green / 65536.0;
+ a[2] = c.blue / 65536.0;
+ a[3] = 1.0;
+}
+
+
ENTRYPOINT void
reshape_unk (ModeInfo *mi, int width, int height)
{
unk_configuration *bp = &bps[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
GLfloat h = (GLfloat) height / (GLfloat) width;
int y = 0;
+ int i;
+ int new_count;
if (width > height * 5) { /* tiny window: show middle */
height = width*1.5;
@@ -104,13 +173,15 @@ reshape_unk (ModeInfo *mi, int width, int height)
if (bp->orthop)
{
+ int magic = 700;
+ int range = 30; /* Must be small or glPolygonOffset doesn't work. */
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
- gluPerspective (1.0, 1/h, 690, 710);
+ gluPerspective (1.0, 1/h, magic-range/2, magic+range/2);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
- gluLookAt( 0, 0, 700,
+ gluLookAt( 0, 0, magic,
0, 0, 0,
0, 1, 0);
if (width < height)
@@ -121,7 +192,7 @@ reshape_unk (ModeInfo *mi, int width, int height)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
- gluPerspective (30.0, 1/h, 20.0, 40.0);
+ gluPerspective (30.0, 1/h, 1.0, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
@@ -132,10 +203,72 @@ reshape_unk (ModeInfo *mi, int width, int height)
glScalef (1/h, 1/h, 1);
}
+ new_count = MI_COUNT(mi);
+
+# if 0
+ /* Lower the resolution to get a decent frame rate on iPhone 4s */
+ if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640)
+ new_count /= 3;
+# endif
+
+ /* Lower it even further for iPhone 3 */
+ if (mi->xgwa.width <= 480 || mi->xgwa.height <= 480)
+ new_count /= 2;
+
+ if (wire) new_count /= 2;
+
+ if (new_count < 1) new_count = 1;
+
+ if (bp->count != new_count || !bp->lines)
+ {
+ if (bp->lines)
+ {
+ for (i = 0; i < bp->count * bp->frames * 2; i++)
+ glDeleteLists (bp->lines[i], 1);
+ free (bp->lines);
+ free (bp->heights);
+ }
+
+ bp->count = new_count;
+ bp->lines = (GLuint *)
+ malloc (bp->count * bp->frames * 2 * sizeof(*bp->lines));
+ for (i = 0; i < bp->count * bp->frames * 2; i++)
+ bp->lines[i] = glGenLists (1);
+ bp->heights = (GLfloat *) calloc (bp->count, sizeof(*bp->heights));
+ }
+
+ {
+ GLfloat lw = 1;
+ GLfloat s = 1;
+
+ if (MI_WIDTH(mi) > 2560) lw = 4; /* Retina displays */
+# ifdef HAVE_COCOA
+ else if (MI_WIDTH(mi) > 1280) lw = 3; /* WTF */
+# endif
+ else if (MI_WIDTH(mi) > 1920) lw = 3;
+ else if (mi->xgwa.width > 640 && mi->xgwa.height > 640) lw = 2;
+
+# ifdef HAVE_MOBILE
+ lw = 4;
+ s = 1.4;
+# else
+ /* Make the image fill the screen a little more fully */
+ if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640)
+ s = 1.2;
+# endif
+
+ glScalef (s, s, s);
+ glLineWidth (lw);
+ }
+
glClear(GL_COLOR_BUFFER_BIT);
}
+# ifdef DEBUG
+static GLfloat poly1 = 0, poly2 = 0;
+# endif
+
ENTRYPOINT Bool
unk_handle_event (ModeInfo *mi, XEvent *event)
{
@@ -161,6 +294,26 @@ unk_handle_event (ModeInfo *mi, XEvent *event)
gltrackball_mousewheel (bp->trackball, b, speed, !!event->xbutton.state);
return True;
}
+
+# ifdef DEBUG
+ else if (event->type == KeyPress)
+ {
+ KeySym keysym;
+ char c = 0;
+ GLfloat i = 0.1;
+ XLookupString (&event->xkey, &c, 1, &keysym, 0);
+ switch (keysym) {
+ case XK_Up: poly1 += i; break;
+ case XK_Down: poly1 -= i; break;
+ case XK_Left: poly2 += i; break;
+ case XK_Right: poly2 -= i; break;
+ default: break;
+ }
+ fprintf (stderr,"%.2f %.2f\n", poly1, poly2);
+ return True;
+ }
+# endif /* DEBUG */
+
else if (gltrackball_event_handler (event, bp->trackball,
MI_WIDTH (mi), MI_HEIGHT (mi),
&bp->button_down_p))
@@ -176,11 +329,117 @@ unk_handle_event (ModeInfo *mi, XEvent *event)
}
+/* Like cos but constrained to [-pi, +pi] */
+static GLfloat
+cos1 (GLfloat th)
+{
+ if (th < -M_PI) th = -M_PI;
+ if (th > M_PI) th = M_PI;
+ return cos (th);
+}
+
+
+/* Returns an array of floats for one new row, range [0, 1.0] */
+static double *
+generate_signal (ModeInfo *mi)
+{
+ unk_configuration *bp = &bps[MI_SCREEN(mi)];
+ double *points = (double *) calloc (sizeof(*points), bp->resolution);
+ double *p;
+ int i, j;
+ int nspikes = (6 + frand(15)) * bp->noise;
+ double step = 1.0 / bp->resolution;
+ double r, max;
+
+ for (j = 0; j < nspikes; j++)
+ {
+ double off = frand (0.8) - 0.4;
+ double amp = (0.1 + frand (0.9)) * nspikes;
+ double freq = (7 + frand (11)) * bp->noise;
+ for (i = 0, r = -0.5, p = points;
+ i < bp->resolution;
+ i++, r += step, p++)
+ *p += amp/2 + amp/2 * cos1 ((r + off) * M_PI * 2 * freq);
+ }
+
+ /* Avoid clipping */
+ max = nspikes;
+ if (max <= 0) max = 1;
+ for (i = 0, p = points; i < bp->resolution; i++, p++)
+ if (max < *p) max = *p;
+
+ /* Multiply by baseline clipping curve, add static. */
+ for (i = 0, r = -0.5, p = points; i < bp->resolution; i++, r += step, p++)
+ *p = ((*p / max)
+ * (0.5 + 0.5 * cos1 (r * r * M_PI * 14) * (1 - frand(0.2))));
+
+ return points;
+}
+
+
+static void
+tick_unk (ModeInfo *mi)
+{
+ unk_configuration *bp = &bps[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
+ double *points = generate_signal (mi);
+ int linesp, frame;
+
+ /* Roll forward by one line (2 dlists per frame) */
+ GLuint *cur = (GLuint *) malloc (bp->frames * 2 * sizeof(*cur));
+ memcpy (cur, bp->lines, bp->frames * 2 * sizeof(*cur));
+ memmove (bp->lines, bp->lines + 2 * bp->frames,
+ sizeof(*bp->lines) * (bp->count-1) * bp->frames * 2);
+ memcpy (bp->lines + (bp->count-1) * bp->frames * 2, cur,
+ bp->frames * 2 * sizeof(*cur));
+
+ memmove (bp->heights, bp->heights + 1,
+ sizeof(*bp->heights) * (bp->count-1));
+ bp->heights[bp->count-1] = 0;
+
+ /* Regenerate the pair at the bottom. */
+
+ for (frame = 0; frame < bp->frames; frame++)
+ {
+ mi->polygon_count = 0;
+ for (linesp = 0; linesp <= 1; linesp++)
+ {
+ int i;
+
+ glNewList (cur[frame * 2 + !linesp], GL_COMPILE);
+ glBegin (linesp
+ ? GL_LINE_STRIP
+ : wire ? GL_LINES : GL_QUAD_STRIP);
+ for (i = 0; i < bp->resolution; i++)
+ {
+ GLfloat x = i / (GLfloat) bp->resolution;
+ GLfloat z = (points[i] + frand (0.05)) * bp->amplitude;
+ if (z < 0) z = 0;
+ if (z > bp->amplitude) z = bp->amplitude;
+ glVertex3f (x, 0, z);
+ if (! linesp)
+ glVertex3f (x, 0, 0);
+ mi->polygon_count++;
+ }
+ glEnd ();
+ glEndList ();
+ }
+ }
+
+ mi->polygon_count *= bp->count;
+ mi->polygon_count += 5; /* base */
+
+ free (cur);
+ free (points);
+}
+
ENTRYPOINT void
init_unk (ModeInfo *mi)
{
unk_configuration *bp;
+ int wire = MI_IS_WIREFRAME(mi);
+ int i;
MI_INIT (mi, bps);
@@ -188,109 +447,110 @@ init_unk (ModeInfo *mi)
bp->glx_context = init_GL(mi);
- bp->orthop = get_boolean_resource (MI_DISPLAY (mi), "ortho", "Ortho");
- bp->resolution = get_float_resource (MI_DISPLAY (mi),
- "resolution", "Resolution");
+ bp->orthop = ortho_arg;
+ bp->resolution = resolution_arg;
+ bp->amplitude = amplitude_arg;
+ bp->noise = noise_arg;
+ bp->aspect = aspect_arg;
+ bp->speed = speed_arg;
+ bp->frames = buzz_arg ? 15 : 1;
if (bp->resolution < 1) bp->resolution = 1;
if (bp->resolution > 300) bp->resolution = 300;
+ if (bp->amplitude < 0.01) bp->amplitude = 0.01;
+ if (bp->amplitude > 1) bp->amplitude = 1;
+ if (bp->noise < 0.01) bp->noise = 0.01;
+ if (bp->speed <= 0.001) bp->speed = 0.001;
- reshape_unk (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ parse_color (mi, "foreground", "Foreground", bp->fg);
+ parse_color (mi, "background", "Background", bp->bg);
- bp->count = MI_COUNT(mi);
- if (bp->count < 1) bp->count = 1;
+ reshape_unk (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
bp->trackball = gltrackball_init (False);
if (MI_COUNT(mi) < 1) MI_COUNT(mi) = 1;
+ /* bp->count is set in reshape */
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-}
-
-
+ bp->base = glGenLists (1);
+ glNewList (bp->base, GL_COMPILE);
+ {
+ GLfloat h1 = 0.01;
+ GLfloat h2 = 0.02;
+ GLfloat h3 = (h1 + h2) / 2;
+ GLfloat s = 0.505;
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (-s, -s, -h1);
+ glVertex3f ( s, -s, -h1);
+ glVertex3f ( s, s, -h1);
+ glVertex3f (-s, s, -h1);
+ glEnd();
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (-s, -s, 0);
+ glVertex3f (-s, -s, -h2);
+ glVertex3f ( s, -s, -h2);
+ glVertex3f ( s, -s, 0);
+ glEnd();
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (-s, -s, 0);
+ glVertex3f (-s, -s, -h2);
+ glVertex3f (-s, s, -h2);
+ glVertex3f (-s, s, 0);
+ glEnd();
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f ( s, -s, 0);
+ glVertex3f ( s, -s, -h2);
+ glVertex3f ( s, s, -h2);
+ glVertex3f ( s, s, 0);
+ glEnd();
+ glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+ glVertex3f (-s, s, 0);
+ glVertex3f (-s, s, -h2);
+ glVertex3f ( s, s, -h2);
+ glVertex3f ( s, s, 0);
+ glEnd();
-static double
-R (double f)
-{
- /* A simple, fast, deterministic PRNG.
- ya_rand_init() is too slow for this, and the stream of numbers here
- doesn't have to be high quality.
- */
-#if 1
- int seed0 = 1613287;
+ glColor3fv (bp->fg);
+ glBegin (GL_LINE_LOOP);
+ s -= 0.01;
+ glVertex3f (-s, -s, -h3);
+ glVertex3f ( s, -s, -h3);
+ glVertex3f ( s, s, -h3);
+ glVertex3f (-s, s, -h3);
+ glEnd();
+ }
+ glEndList ();
-# else
- /* Kluge to let me pick a good seed factor by trial and error... */
- static int seed0 = 0;
- static int count = 0;
- if (count++ > 150000000) seed0 = 0, count=0;
- if (! seed0)
+ if (! wire)
{
- seed0 = (random() & 0xFFFFF);
- fprintf(stderr, "seed0 = %8x %d\n", seed0, seed0);
+ glEnable (GL_LINE_SMOOTH);
+ glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable (GL_BLEND);
}
-# endif
- long seed = seed0 * f;
- seed = 48271 * (seed % 44488) - 3399 * (seed / 44488);
- f = (double) seed / 0x7FFFFFFF;
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- return f;
+ for (i = 0; i < bp->count; i++)
+ tick_unk (mi);
}
-static void
-compute_line (ModeInfo *mi,
- int xmin, int xmax, GLfloat xinc,
- GLfloat res_scale,
- int y,
- GLfloat *points)
+static double
+ease_fn (double r)
{
- unk_configuration *bp = &bps[MI_SCREEN(mi)];
-
- GLfloat fx;
- int lastx = -999999;
-
- /* Compute the points on the line */
-
- for (fx = xmin; fx < xmax; fx += xinc)
- {
- int x = fx;
- int n;
- GLfloat hsum = 0, vsum = 0;
-
- if (x == lastx) continue;
- lastx = x;
-
- for (n = 1; n <= 30; n++)
- {
- /* This sum affects crinkliness of the lines */
- hsum += (10 *
- sin (2 * M_PI
- * R (4 * y)
- + bp->t
- + R (2 * n * y)
- * 2 * M_PI)
- * exp (-pow ((.3 * (x / res_scale) + 30
- - 1 * 100 * R (2 * n * y)),
- 2)
- / 20.0));
- }
-
- for (n = 1; n <= 4; n++)
- {
- /* This sum affects amplitude of the peaks */
- vsum += (3 * (1 + R (3 * n * y))
- * fabs (sin (bp->t + R (n * y)
- * 2 * M_PI))
- * exp (-pow (((x / res_scale) - 1 * 100 * R (n * y)),
- 2)
- / 20.0));
- }
+ return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */
+}
- /* Scale of this affects amplitude of the flat parts */
- points[x - xmin] = (0.2 * sin (2 * M_PI * R (6 * y) + hsum) + vsum);
- }
+static double
+ease_ratio (double r)
+{
+ double ease = 0.5;
+ if (r <= 0) return 0;
+ else if (r >= 1) return 1;
+ else if (r <= ease) return ease * ease_fn (r / ease);
+ else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease);
+ else return r;
}
@@ -298,32 +558,25 @@ ENTRYPOINT void
draw_unk (ModeInfo *mi)
{
unk_configuration *bp = &bps[MI_SCREEN(mi)];
+ int wire = MI_IS_WIREFRAME(mi);
Display *dpy = MI_DISPLAY(mi);
Window window = MI_WINDOW(mi);
- int wire = MI_IS_WIREFRAME(mi);
- GLfloat aspect = 1.5;
+ GLfloat step = 1.0 / bp->count;
+ double speed = (0.6 / bp->speed) * (80.0 / bp->count);
+ double now = double_time();
+ double ratio = (now - bp->tick) / speed;
+ int frame;
+ int i;
- GLfloat res_scale = 4;
- int xmin = -50 * res_scale;
- int xmax = 150 * res_scale;
- GLfloat xinc = 100.0 / (bp->resolution / res_scale);
- int ymin = 1;
- int ytop = MI_COUNT(mi);
- int yinc = 1;
- int y;
- GLfloat *points;
-
- if (xinc < 0.25) xinc = 0.25;
+ ratio = (ratio < 0 ? 0 : ratio > 1 ? 1 : ratio);
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- mi->polygon_count = 0;
-
glShadeModel (GL_FLAT);
glEnable (GL_DEPTH_TEST);
glDisable (GL_CULL_FACE);
@@ -333,152 +586,93 @@ draw_unk (ModeInfo *mi)
glRotatef(current_device_rotation(), 0, 0, 1);
gltrackball_rotate (bp->trackball);
- glScalef (10, 10, 10);
glRotatef (-45, 1, 0, 0);
- glTranslatef (-0.5, -0.5, 0);
- if (bp->orthop)
- glTranslatef (0, 0.05, 0);
+
+ i = bp->orthop ? 15 : 17;
+ glScalef (i / bp->aspect, i, i / bp->aspect);
+
+ glDisable (GL_POLYGON_OFFSET_FILL);
+ if (wire)
+ glColor3f (0.5 * bp->fg[0], 0.5 * bp->fg[1], 0.5 * bp->fg[2]);
else
- glTranslatef (0, 0.15, 0);
+ glColor4fv (bp->bg);
+ glCallList (bp->base);
- points = (GLfloat *) malloc (sizeof(*points) * (xmax - xmin));
+ /* So the masking quads don't interfere with the lines.
+ These numbers are empirical black magic. */
+ glEnable (GL_POLYGON_OFFSET_FILL);
- if (!bp->button_down_p)
- {
- double s = 6.3 / 19 / 3;
-# if 1
- bp->t -= s * speed;
- if (bp->t <= 0)
- bp->t = s * 18 * 3;
+# ifdef DEBUG
+ glPolygonOffset (poly1, poly2);
# else
- bp->t += s;
+ glPolygonOffset (0.5, 0.5);
# endif
- }
- glLineWidth (2);
+ glTranslatef (-0.5, 0.55 + step*ratio, 0);
- /* Lower the resolution to get a decent frame rate on iPhone 4s */
- if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640)
+ frame = random() % bp->frames;
+ for (i = 0; i < bp->count; i++)
{
- ytop *= 0.6;
- xinc *= 3;
+ int j = i * bp->frames * 2 + frame * 2;
+ GLfloat s = ease_ratio (bp->heights[i]);
+ GLfloat s2 = ease_ratio (bp->heights[i] * 1.5);
+
+ glPushMatrix();
+ glScalef (1, 1, s);
+ glColor4f (bp->fg[0], bp->fg[1], bp->fg[2], s2);
+ glCallList (bp->lines[j]); /* curve */
+ s = 1;
+ if (wire)
+ glColor4f (0.5 * bp->fg[0], 0.5 * bp->fg[1], 0.5 * bp->fg[2], s);
+ else
+ glColor4f (bp->bg[0], bp->bg[1], bp->bg[2], s);
+ glCallList (bp->lines[j+1]); /* shield */
+ glPopMatrix();
+ glTranslatef (0, -step, 0);
}
-# ifdef HAVE_MOBILE
- /* Lower it even further for iPhone 3 */
- if (mi->xgwa.width <= 480 || mi->xgwa.height <= 480)
- {
- ytop *= 0.8;
- xinc *= 1.2;
- }
-
- /* Performance just sucks on iPad 3, even with a very high xinc. WTF? */
-/*
- if (mi->xgwa.width >= 2048 || mi->xgwa.height >= 2048)
- xinc *= 2;
-*/
-
-# endif /* HAVE_MOBILE */
-
-
- /* Make the image fill the screen a little more fully */
- if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640)
- {
- glScalef (1.2, 1.2, 1.2);
- glTranslatef (-0.08, 0, 0);
- }
-
- if (mi->xgwa.width <= 480 || mi->xgwa.height <= 480)
- glLineWidth (1);
-
-
- if (wire)
- xinc *= 1.3;
+ glPopMatrix ();
- /* Draw back mask */
- {
- GLfloat s = 0.99;
- glDisable (GL_POLYGON_OFFSET_FILL);
- glColor3f (0, 0, 0);
- glPushMatrix();
- glTranslatef (0, (1-aspect)/2, -0.005);
- glScalef (1, aspect, 1);
- glTranslatef (0.5, 0.5, 0);
- glScalef (s, s, 1);
- glBegin (GL_QUADS);
- glVertex3f (-0.5, -0.5, 0);
- glVertex3f ( 0.5, -0.5, 0);
- glVertex3f ( 0.5, 0.5, 0);
- glVertex3f (-0.5, 0.5, 0);
- glEnd();
- glPopMatrix();
- }
+ if (mi->fps_p) do_fps (mi);
+ glFinish();
- if (! wire)
+ if (!bp->button_down_p)
{
- glEnable (GL_LINE_SMOOTH);
- glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
- glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glEnable (GL_BLEND);
-
- /* So the masking quads don't interfere with the lines */
- glEnable (GL_POLYGON_OFFSET_FILL);
- glPolygonOffset (1.0, 1.0);
- }
+ /* Set height/fade based on distance from either edge. */
+ GLfloat dist = bp->count * 0.05;
+ int i;
+ for (i = 0; i < bp->count; i++)
+ {
+ GLfloat i2 = i - ratio;
+ GLfloat h = ((i2 < bp->count/2 ? i2 : (bp->count - 1 - i2))
+ / dist);
+ bp->heights[i] = (h > 1 ? 1 : h < 0 ? 0 : h);
+ }
- for (y = ymin; y <= ytop; y += yinc)
- {
- /* Compute all the verts on the line */
- compute_line (mi, xmin, xmax, xinc, res_scale, y, points);
-
- /* Draw the line segments; then draw the black shielding quads. */
- {
- GLfloat yy = y / (GLfloat) ytop;
- int linesp;
-
- yy = (yy * aspect) - ((aspect - 1) / 2);
-
- for (linesp = 0; linesp <= 1; linesp++)
- {
- GLfloat fx;
- int lastx = -999999;
-
- GLfloat c = (linesp || wire ? 1 : 0);
- glColor3f (c, c, c);
-
- glBegin (linesp
- ? GL_LINE_STRIP
- : wire ? GL_LINES : GL_QUAD_STRIP);
- lastx = -999999;
- for (fx = xmin; fx < xmax; fx += xinc)
- {
- int x = fx;
- GLfloat xx = (x - xmin) / (GLfloat) (xmax - xmin);
- GLfloat zz = points [x - xmin];
-
- if (x == lastx) continue;
- lastx = x;
-
- zz /= 80;
- glVertex3f (xx, yy, zz);
- if (! linesp)
- glVertex3f (xx, yy, 0);
- mi->polygon_count++;
- }
- glEnd ();
- }
- }
+ if (bp->tick + speed <= now) /* Add a new row. */
+ {
+ tick_unk (mi);
+ bp->tick = now;
+ }
}
- free (points);
+ glXSwapBuffers(dpy, window);
+}
- glPopMatrix ();
- if (mi->fps_p) do_fps (mi);
- glFinish();
-
- glXSwapBuffers(dpy, window);
+ENTRYPOINT void
+free_unk (ModeInfo *mi)
+{
+ unk_configuration *bp = &bps[MI_SCREEN(mi)];
+ int i;
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+ if (bp->trackball) gltrackball_free (bp->trackball);
+ for (i = 0; i < bp->count * bp->frames * 2; i++)
+ glDeleteLists (bp->lines[i], 1);
+ free (bp->lines);
+ free (bp->heights);
}
XSCREENSAVER_MODULE_2 ("UnknownPleasures", unknownpleasures, unk)
diff --git a/hacks/glx/unknownpleasures.man b/hacks/glx/unknownpleasures.man
index 422c81f..2eab727 100644
--- a/hacks/glx/unknownpleasures.man
+++ b/hacks/glx/unknownpleasures.man
@@ -1,6 +1,6 @@
.TH XScreenSaver 1 "" "X Version 11"
.SH NAME
-unknownpleasures - an animation of the signal from the pulsar PSR B1919+21.
+unknownpleasures - a waterfall graph of the signal from pulsar PSR B1919+21.
.SH SYNOPSIS
.B unknownpleasures
[\-display \fIhost:display.screen\fP]
@@ -8,10 +8,14 @@ unknownpleasures - an animation of the signal from the pulsar PSR B1919+21.
[\-window]
[\-root]
[\-delay \fInumber\fP]
-[\-speed \fIpercent\fP]
-[\-count \fIinteger\fP]
-[\-resolution \fIpercent\fP]
+[\-count \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-resolution \fInumber\fP]
+[\-amplitude \fInumber\fP]
+[\-noise \fInumber\fP]
[\-no-ortho]
+[\-buzz]
+[\-wireframe]
[\-fps]
.SH DESCRIPTION
PSR B1919+21 (AKA CP 1919) was the first pulsar ever discovered: a spinning
@@ -34,7 +38,7 @@ Draw on a newly-created window. This is the default.
Draw on the root window.
.TP 8
.B \-delay \fInumber\fP
-Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
+Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
.B \-speed \fInumber\fP
Animation speed. 2 for twice as fast, 0.5 for half as fast.
@@ -42,12 +46,24 @@ Animation speed. 2 for twice as fast, 0.5 for half as fast.
.B \-count \fInumber\fP
Scanlines (vertical resolution). Default: 80.
.TP 8
-.B \-count \fInumber\fP
-Horizontal Resolution, Default: 100%.
+.B \-resolution \fInumber\fP
+Horizontal Resolution, Default: 100.
+.TP 8
+.B \-amplitude \fInumber\fP
+Height of the waves, 0 - 1.0. Default: 0.13.
+.TP 8
+.B \-noise \fInumber\fP
+How noisy the signal is. 2 for twice as noisy, 0.5 for half as noisy.
.TP 8
.B \-ortho | \-no-ortho
Whether to use an orthographic projection.
.TP 8
+.B \-buzz | \-no-buzz
+Whether each line should seethe with noise.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
.B \-fps | \-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
@@ -63,7 +79,7 @@ stored in the RESOURCE_MANAGER property.
.BR X (1),
.BR xscreensaver (1)
.SH COPYRIGHT
-Copyright \(co 2013 by Jamie Zawinski. Permission to use, copy, modify,
+Copyright \(co 2013-2018 by Jamie Zawinski. Permission to use, copy, modify,
distribute, and sell this software and its documentation for any purpose is
hereby granted without fee, provided that the above copyright notice appear
in all copies and that both that copyright notice and this permission notice
diff --git a/hacks/glx/vigilance.c b/hacks/glx/vigilance.c
index 05e19ed..49f0df5 100644
--- a/hacks/glx/vigilance.c
+++ b/hacks/glx/vigilance.c
@@ -22,7 +22,6 @@
"*lensColor: #000000" "\n" \
"*groundColor: #004400" "\n" \
-# define free_camera 0
# define release_camera 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -210,6 +209,7 @@ parse_color (ModeInfo *mi, char *key, GLfloat color[4])
key, string);
exit (1);
}
+ free (string);
color[0] = xcolor.red / 65536.0;
color[1] = xcolor.green / 65536.0;
@@ -1053,7 +1053,7 @@ draw_camera (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -1145,6 +1145,32 @@ draw_camera (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_camera (ModeInfo *mi)
+{
+ camera_configuration *bp = &bps[MI_SCREEN(mi)];
+ pedestrian *p;
+ int i;
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+ if (bp->user_trackball) gltrackball_free (bp->user_trackball);
+ if (bp->cameras) free (bp->cameras);
+ p = bp->pedestrians;
+ while (p) {
+ pedestrian *p2 = p->next;
+ free (p);
+ p = p2;
+ }
+ if (bp->dlists) {
+ for (i = 0; i < countof(all_objs); i++)
+ if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+ free (bp->dlists);
+ }
+}
+
XSCREENSAVER_MODULE_2 ("Vigilance", vigilance, camera)
#endif /* USE_GL */
diff --git a/hacks/glx/voronoi.c b/hacks/glx/voronoi.c
index 895f967..01b3ccd 100644
--- a/hacks/glx/voronoi.c
+++ b/hacks/glx/voronoi.c
@@ -13,7 +13,6 @@
"*showFPS: False \n" \
"*suppressRotationAnimation: True\n" \
-# define free_voronoi 0
# define release_voronoi 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
@@ -514,7 +513,7 @@ draw_voronoi (ModeInfo *mi)
if (!vp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(vp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *vp->glx_context);
glShadeModel(GL_FLAT);
glEnable(GL_POINT_SMOOTH);
@@ -538,6 +537,23 @@ draw_voronoi (ModeInfo *mi)
glXSwapBuffers(dpy, window);
}
+
+ENTRYPOINT void
+free_voronoi (ModeInfo *mi)
+{
+ voronoi_configuration *vp = &vps[MI_SCREEN(mi)];
+ node *n;
+ if (!vp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *vp->glx_context);
+ if (vp->colors) free (vp->colors);
+ n = vp->nodes;
+ while (n) {
+ node *n2 = n->next;
+ free (n);
+ n = n2;
+ }
+}
+
XSCREENSAVER_MODULE ("Voronoi", voronoi)
#endif /* USE_GL */
diff --git a/hacks/glx/winduprobot.c b/hacks/glx/winduprobot.c
index 61091cf..148dd1f 100644
--- a/hacks/glx/winduprobot.c
+++ b/hacks/glx/winduprobot.c
@@ -332,6 +332,7 @@ load_textures (ModeInfo *mi)
xi->width, xi->height, 0,
GL_RGBA, GL_UNSIGNED_BYTE, xi->data);
check_gl_error("texture");
+ XDestroyImage (xi);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
@@ -356,6 +357,7 @@ parse_color (ModeInfo *mi, char *key, GLfloat color[4])
key, string);
exit (1);
}
+ free (string);
color[0] = xcolor.red / 65536.0;
color[1] = xcolor.green / 65536.0;
@@ -2300,7 +2302,7 @@ draw_robot (ModeInfo *mi)
if (!bp->glx_context)
return;
- glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -2471,11 +2473,31 @@ draw_robot (ModeInfo *mi)
ENTRYPOINT void
free_robot (ModeInfo *mi)
{
-# ifdef WORDBUBBLES
robot_configuration *bp = &bps[MI_SCREEN(mi)];
- if (bp->tc)
- textclient_close (bp->tc);
+ int i;
+
+ if (!bp->glx_context) return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+ if (bp->user_trackball) gltrackball_free (bp->user_trackball);
+ if (bp->walkers) free (bp->walkers);
+ if (robot_dome) free (robot_dome); robot_dome = 0;
+ if (robot_gear) free (robot_gear); robot_gear = 0;
+ if (ground) free (ground); ground = 0;
+
+# ifdef WORDBUBBLES
+ if (bp->tc) textclient_close (bp->tc);
+ if (bp->font_data) free_texture_font (bp->font_data);
# endif
+
+# ifdef HAVE_TEXTURE
+ if (bp->chrome_texture) glDeleteTextures(1, &bp->chrome_texture);
+# endif
+ if (bp->dlists) {
+ for (i = 0; i < countof(all_objs); i++)
+ if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+ free (bp->dlists);
+ }
}
XSCREENSAVER_MODULE_2 ("WindupRobot", winduprobot, robot)
diff --git a/hacks/glx/xlock-gl-utils.c b/hacks/glx/xlock-gl-utils.c
index 36d724c..3e610a1 100644
--- a/hacks/glx/xlock-gl-utils.c
+++ b/hacks/glx/xlock-gl-utils.c
@@ -132,6 +132,7 @@ init_GL(ModeInfo * mi)
if (! XParseColor (dpy, mi->xgwa.colormap, s, &c))
fprintf (stderr, "%s: can't parse color %s; using black.\n",
progname, s);
+ if (s) free (s);
glClearColor (c.red / 65535.0,
c.green / 65535.0,
c.blue / 65535.0,
diff --git a/hacks/halftone.c b/hacks/halftone.c
index b70a636..ecdd84f 100644
--- a/hacks/halftone.c
+++ b/hacks/halftone.c
@@ -357,6 +357,17 @@ static void
halftone_free (Display *dpy, Window window, void *closure)
{
halftone_screen *halftone = (halftone_screen *) closure;
+ free (halftone->gravity_point_x);
+ free (halftone->gravity_point_y);
+ free (halftone->gravity_point_mass);
+ free (halftone->gravity_point_x_inc);
+ free (halftone->gravity_point_y_inc);
+ free (halftone->dots);
+ free (halftone->colors);
+ if (halftone->buffer && halftone->buffer != halftone->window)
+ XFreePixmap (dpy, halftone->buffer);
+ if (halftone->gc) XFreeGC (dpy, halftone->gc);
+ if (halftone->buffer_gc) XFreeGC (dpy, halftone->buffer_gc);
free (halftone);
}
diff --git a/hacks/halo.c b/hacks/halo.c
index 42b6a55..c4d5ada 100644
--- a/hacks/halo.c
+++ b/hacks/halo.c
@@ -117,6 +117,7 @@ halo_init (Display *dpy, Window window)
progname, mode_str);
exit (1);
}
+ if (mode_str) free (mode_str);
if (mono_p) cmode = seuss_mode;
if (cmode == random_mode)
@@ -435,6 +436,16 @@ halo_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
halo_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->draw_gc);
+ XFreeGC (dpy, st->erase_gc);
+ XFreeGC (dpy, st->copy_gc);
+ XFreeGC (dpy, st->merge_gc);
+ if (st->pixmap) XFreePixmap (dpy, st->pixmap);
+ if (st->buffer) XFreePixmap (dpy, st->buffer);
+ free (st->circles);
+ free (st->colors);
+ free (st);
}
XSCREENSAVER_MODULE ("Halo", halo)
diff --git a/hacks/helix.c b/hacks/helix.c
index 0fdaa90..7c1051c 100644
--- a/hacks/helix.c
+++ b/hacks/helix.c
@@ -330,6 +330,7 @@ static void
helix_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->draw_gc);
free (st);
}
diff --git a/hacks/hexadrop.c b/hacks/hexadrop.c
index 678a3c3..e8c2d65 100644
--- a/hacks/hexadrop.c
+++ b/hacks/hexadrop.c
@@ -277,7 +277,8 @@ hexadrop_init_1 (Display *dpy, Window window, state *st)
else
st->lockstep_p = get_boolean_resource (st->dpy, "lockstep","Lockstep");
}
-
+ if (s1) free (s1);
+ if (s2) free (s2);
st->sides = get_integer_resource (st->dpy, "sides", "Sides");
if (! (st->sides == 0 || st->sides == 3 || st->sides == 4 ||
@@ -355,6 +356,7 @@ hexadrop_free (Display *dpy, Window window, void *closure)
XFreeGC (st->dpy, st->gc);
st->gc = 0;
}
+ free (st);
}
diff --git a/hacks/hyperball.c b/hacks/hyperball.c
index cae6360..767f008 100644
--- a/hacks/hyperball.c
+++ b/hacks/hyperball.c
@@ -548,6 +548,11 @@ static void
hyperball_free (Display *dpy, Window window, void *closure)
{
struct hyper_state *hs = (struct hyper_state *) closure;
+ int i, j;
+ XFreeGC (dpy, hs->black_gc);
+ for (i = 0; i < 8; i++)
+ for (j = 0; j < 8; j++)
+ if (hs->hs_color_gcs[i][j]) XFreeGC (dpy, hs->hs_color_gcs[i][j]);
free (hs);
}
diff --git a/hacks/hypercube.c b/hacks/hypercube.c
index 0055696..fe9e177 100644
--- a/hacks/hypercube.c
+++ b/hacks/hypercube.c
@@ -564,6 +564,12 @@ static const struct line_info line_table[LINE_COUNT] =
static void
hypercube_free (Display *dpy, Window window, void *closure)
{
+ struct hyper_state *hs = (struct hyper_state *) closure;
+ int i;
+ XFreeGC (dpy, hs->black_gc);
+ for (i = 0; i < 8; i++)
+ if (hs->hs_color_gcs[i]) XFreeGC (dpy, hs->hs_color_gcs[i]);
+ free (hs);
}
XSCREENSAVER_MODULE ("HyperCube", hypercube)
diff --git a/hacks/ifs.c b/hacks/ifs.c
index ad8af95..b879f10 100644
--- a/hacks/ifs.c
+++ b/hacks/ifs.c
@@ -545,6 +545,7 @@ ifs_free (Display *dpy, Window window, void *closure)
if (st->colours) free(st->colours);
if (st->backbuffer != None && st->backbuffer != st->window)
XFreePixmap(st->dpy, st->backbuffer);
+ XFreeGC (dpy, st->gc);
free(st);
}
diff --git a/hacks/images/dvd.png b/hacks/images/dvd.png
new file mode 100644
index 0000000..238ed58
--- /dev/null
+++ b/hacks/images/dvd.png
Binary files differ
diff --git a/hacks/images/sun.png b/hacks/images/sun.png
new file mode 100644
index 0000000..45f631a
--- /dev/null
+++ b/hacks/images/sun.png
Binary files differ
diff --git a/hacks/imsmap.c b/hacks/imsmap.c
index 1877243..475447b 100644
--- a/hacks/imsmap.c
+++ b/hacks/imsmap.c
@@ -161,8 +161,10 @@ init_map (struct state *st)
if (mono_p)
st->flip_xy = 0;
- else if (st->colors)
+ else if (st->colors) {
free_colors (st->xgwa.screen, st->cmap, st->colors, st->ncolors);
+ free (st->colors);
+ }
st->colors = 0;
st->ncolors = get_integer_resource (st->dpy, "ncolors", "Integer");
@@ -187,6 +189,7 @@ init_map (struct state *st)
if (!mono_p)
{
if (st->ncolors < 1) st->ncolors = 1;
+ if (st->colors) free (st->colors);
st->colors = (XColor *) malloc (st->ncolors * sizeof(*st->colors));
make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->cmap,
@@ -387,6 +390,8 @@ static void
imsmap_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->gc);
+ XFreeGC (dpy, st->gc2);
if (st->colors) free (st->colors);
if (st->cell) free (st->cell);
free (st);
diff --git a/hacks/interaggregate.c b/hacks/interaggregate.c
index 6308841..999ef9e 100644
--- a/hacks/interaggregate.c
+++ b/hacks/interaggregate.c
@@ -974,6 +974,13 @@ static void
interaggregate_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ if (st->f) {
+ free_circles (st->f);
+ if (st->f->off_img) free (st->f->off_img);
+ if (st->f->parsedcolors) free (st->f->parsedcolors);
+ free (st->f);
+ }
+ if (st->fgc) XFreeGC (st->dpy, st->fgc);
free (st);
}
diff --git a/hacks/interference.c b/hacks/interference.c
index 7860143..98f89e2 100644
--- a/hacks/interference.c
+++ b/hacks/interference.c
@@ -364,10 +364,8 @@ static void inter_free(Display* dpy, struct inter_context* c)
destroy_image(dpy, c);
- if(c->colors <= 2)
- free(c->pal);
- else if(c->pal)
- free_colors(c->screen, c->cmap, c->pal, c->colors);
+ free_colors(c->screen, c->cmap, c->pal, c->colors);
+ if (c->pal) free(c->pal);
#ifndef USE_XIMAGE
for(i = 0; i != c->colors; ++i)
@@ -995,6 +993,7 @@ interference_free (Display *dpy, Window window, void *closure)
{
struct inter_context *c = (struct inter_context *) closure;
inter_free(dpy, c);
+ free(c);
}
XSCREENSAVER_MODULE ("Interference", interference)
diff --git a/hacks/intermomentary.c b/hacks/intermomentary.c
index 4e65b76..fc5b932 100644
--- a/hacks/intermomentary.c
+++ b/hacks/intermomentary.c
@@ -543,6 +543,22 @@ static void
intermomentary_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ if (st->f) {
+ if (st->f->off_alpha) free(st->f->off_alpha);
+ if (st->f->off_map != window) XFreePixmap (dpy, st->f->off_map);
+ if (st->f->discs) {
+ int i;
+ for (i = 0; i < st->f->num; i++) {
+ if (st->f->discs[i].pxRiders) free (st->f->discs[i].pxRiders);
+ }
+ free (st->f->discs);
+ }
+ free (st->f);
+ }
+ if (st->colors) free (st->colors);
+ XFreeGC (dpy, st->fgc);
+ XFreeGC (dpy, st->copygc);
+
free (st);
}
diff --git a/hacks/juggle.c b/hacks/juggle.c
index e6ff01f..fba0fe5 100644
--- a/hacks/juggle.c
+++ b/hacks/juggle.c
@@ -2598,6 +2598,7 @@ init_juggle (ModeInfo * mi)
if(describe && !sp->mode_font) { /* Check to see if there's room to describe patterns. */
char *font = get_string_resource (MI_DISPLAY(mi), "font", "Font");
sp->mode_font = load_font_retry(MI_DISPLAY(mi), font);
+ if (font) free (font);
}
}
diff --git a/hacks/kaleidescope.c b/hacks/kaleidescope.c
index 87a8236..8070368 100644
--- a/hacks/kaleidescope.c
+++ b/hacks/kaleidescope.c
@@ -41,11 +41,11 @@ struct Obj {
void (*propigate) (GLOBAL *, OBJECT *);
void (*draw) (GLOBAL *, OBJECT *);
void (*init) (GLOBAL *, OBJECT *);
- void *cur;
+ void *cur, *root;
};
typedef struct KSEGMENT {
- struct KSEGMENT *next;
+ struct KSEGMENT *next, *next0;
XColor color;
int drawn;
short int x1,y1,x2,y2; /* these are in the natural coordinate system */
@@ -211,9 +211,10 @@ create_ksegment (GLOBAL *g)
kcopy_color(&(prev->color), &new_color);
- prev->next = (Ksegment*)malloc(sizeof(Ksegment));
- (prev->next)->xsegments = (XSegment*)malloc(g->symmetry * sizeof(XSegment));
+ prev->next = (Ksegment*)calloc(1,sizeof(Ksegment));
+ (prev->next)->xsegments = (XSegment*)calloc(g->symmetry, sizeof(XSegment));
prev->drawn = 0;
+ prev->next0 = prev->next;
prev = (prev->next);
}
@@ -345,7 +346,7 @@ create_objects (GLOBAL *g)
g->objects = (OBJECT *) malloc(g->nobjects * sizeof(OBJECT));
for (i=0; i< g->nsegments; i++) {
- g->objects[i].cur = create_ksegment(g);
+ g->objects[i].cur = g->objects[i].root = create_ksegment(g);
g->objects[i].type = 1;
g->objects[i].time = 0;
g->objects[i].propigate = propigate_ksegment;
@@ -406,6 +407,7 @@ init_g (GLOBAL *g)
} else {
g->color_mode = 2;
}
+ if (color_mode_str) free(color_mode_str);
XGetWindowAttributes (g->dpy, g->window, &xgwa);
g->xmax = xgwa.width;
@@ -484,6 +486,19 @@ static void
kaleidescope_free (Display *dpy, Window window, void *closure)
{
GLOBAL *g = (GLOBAL *) closure;
+ int i;
+ for (i = 0; i < g->nsegments; i++) {
+ Ksegment *s = g->objects[i].root;
+ while (s) {
+ Ksegment *p = s;
+ s = s->next0;
+ free (p->xsegments);
+ free (p);
+ }
+ }
+ free (g->objects);
+ XFreeGC (dpy, g->draw_gc);
+ XFreeGC (dpy, g->erase_gc);
free (g);
}
diff --git a/hacks/kumppa.c b/hacks/kumppa.c
index 2e2955b..fc5167d 100644
--- a/hacks/kumppa.c
+++ b/hacks/kumppa.c
@@ -531,6 +531,8 @@ kumppa_free (Display *dpy, Window window, void *closure)
free (st->Yrotations);
free (st->Xrottable);
free (st->Yrottable);
+ free (st->rotateX);
+ free (st->rotateY);
free (st);
}
diff --git a/hacks/lmorph.c b/hacks/lmorph.c
index 9468a72..ae45da1 100644
--- a/hacks/lmorph.c
+++ b/hacks/lmorph.c
@@ -362,6 +362,7 @@ initLMorph(struct state *st)
fprintf(stderr, "figtype should be `all', `open' or `closed'.\n");
st->figType = FT_ALL;
}
+ if (ft) free (ft);
if (steps <= 0)
steps = (random() % 400) + 100;
@@ -389,7 +390,7 @@ initLMorph(struct state *st)
st->aSlopeTo = (XPoint *) xmalloc(st->numPoints * sizeof(XPoint));
st->aSlopeFrom = (XPoint *) xmalloc(st->numPoints * sizeof(XPoint));
- st->aNext = (XPoint *) xmalloc(st->numPoints * sizeof(XPoint));
+ st->aNext = 0;
for (i = 0; i < st->numPoints ; i++) {
st->aSlopeTo[i].x = 0.0;
@@ -562,6 +563,16 @@ static void
lmorph_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ int i;
+ XFreeGC (dpy, st->gcDraw);
+ XFreeGC (dpy, st->gcClear);
+ free (st->aWork[0]);
+ free (st->aWork[1]);
+ free (st->aTmp);
+ free (st->aSlopeTo);
+ free (st->aSlopeFrom);
+ for (i = 0; i < MAXFIGS; i++)
+ if (st->a[i]) free (st->a[i]);
free (st);
}
diff --git a/hacks/m6502.c b/hacks/m6502.c
index ce18e9d..d7c78e1 100644
--- a/hacks/m6502.c
+++ b/hacks/m6502.c
@@ -299,7 +299,9 @@ static void
m6502_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ m6502_destroy6502(st->machine);
analogtv_release(st->tv);
+ free (st->inp);
free (st->file);
free (st);
}
diff --git a/hacks/maze.c b/hacks/maze.c
index a0007dd..acaeba5 100644
--- a/hacks/maze.c
+++ b/hacks/maze.c
@@ -1655,6 +1655,16 @@ static void
maze_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->gc);
+ XFreeGC (dpy, st->cgc);
+ XFreeGC (dpy, st->tgc);
+ XFreeGC (dpy, st->sgc);
+ XFreeGC (dpy, st->ugc);
+ XFreeGC (dpy, st->logo_gc);
+ XFreeGC (dpy, st->erase_gc);
+ if (st->solve_state) free (st->solve_state);
+ if (st->logo_map) XFreePixmap (dpy, st->logo_map);
+ exit_sets (st);
free (st);
}
diff --git a/hacks/memscroller.c b/hacks/memscroller.c
index 2ccc8ad..9e81e50 100644
--- a/hacks/memscroller.c
+++ b/hacks/memscroller.c
@@ -90,36 +90,16 @@ memscroller_init (Display *dpy, Window window)
{
int i;
int nfonts = countof (st->fonts);
- for (i = nfonts-1; i >= 0; i--)
+ for (i = 0; i < nfonts; i++)
{
char *fontname;
char res[20];
sprintf (res, "font%d", i+1);
fontname = get_string_resource (dpy, res, "Font");
- /* Each resource can be a comma-separated list of font names.
- We use the first one that exists. */
- if (fontname && *fontname)
- {
- char *f2 = strdup(fontname);
- char *f, *token = f2;
- while ((f = strtok(token, ",")) && !st->fonts[i])
- {
- token = 0;
- while (*f == ' ' || *f == '\t') f++;
- st->fonts[i] = load_font_retry (dpy, f);
- }
- free (f2);
- if (!st->fonts[i] && i < nfonts-1)
- {
- fprintf (stderr, "%s: unable to load font: \"%s\"\n",
- progname, fontname);
- st->fonts[i] = st->fonts[i+1];
- }
- }
+ if (fontname && *fontname)
+ st->fonts[i] = load_font_retry (dpy, fontname);
+ if (fontname) free (fontname);
}
-
- if (!st->fonts[0])
- st->fonts[0] = load_font_retry (dpy, "fixed");
if (!st->fonts[0]) abort();
}
@@ -581,6 +561,18 @@ memscroller_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
memscroller_free (Display *dpy, Window window, void *closure)
{
+ state *st = (state *) closure;
+ int i;
+ for (i = 0; i < st->nscrollers; i++)
+ destroy_xshm_image (dpy, st->scrollers[i].image, &st->shm_info);
+ free (st->scrollers);
+ for (i = 0; i < countof (st->fonts); i++)
+ if (st->fonts[i]) XFreeFont (dpy, st->fonts[i]);
+ if (st->filename) free (st->filename);
+ XFreeGC (dpy, st->draw_gc);
+ XFreeGC (dpy, st->erase_gc);
+ XFreeGC (dpy, st->text_gc);
+ free (st);
}
@@ -601,13 +593,6 @@ static const char *memscroller_defaults [] = {
".font4: OCR A Std 96, Lucida Console 96, Monaco 96",
".font5: OCR A Std 48, Lucida Console 48, Monaco 48",
".font6: OCR A Std 24, Lucida Console 24, Monaco 24",
-#elif 0 /* real X11, XQueryFont() */
- ".font1: -*-courier-bold-r-*-*-*-1440-*-*-m-*-*-*",
- ".font2: -*-courier-bold-r-*-*-*-960-*-*-m-*-*-*",
- ".font3: -*-courier-bold-r-*-*-*-480-*-*-m-*-*-*",
- ".font4: -*-courier-bold-r-*-*-*-320-*-*-m-*-*-*",
- ".font5: -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*",
- ".font6: fixed",
#else /* real X11, load_font_retry() */
".font1: -*-ocr a std-medium-r-*-*-*-1440-*-*-m-*-*-*",
".font2: -*-ocr a std-medium-r-*-*-*-960-*-*-m-*-*-*",
diff --git a/hacks/metaballs.c b/hacks/metaballs.c
index 3a2ae73..f387785 100644
--- a/hacks/metaballs.c
+++ b/hacks/metaballs.c
@@ -386,19 +386,20 @@ metaballs_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
metaballs_free (Display *dpy, Window window, void *closure)
{
-#if 0
struct state *st = (struct state *) closure;
- free( st->pImage->data );
- XDestroyImage( st->pImage );
- free( st->aiColorVals );
- free( st->blobs );
- for (i = 0; i < st->iWinHeight; ++i)
- free( st->blub[i] );
- free( st->blub );
- for (i = 0; i < st->dradius; ++i)
- free( st->blob[i] );
- free( st->blob );
-#endif
+ int i;
+ if (st->pImage) XDestroyImage (st->pImage);
+ free (st->aiColorVals);
+ free (st->blobs);
+ for (i = 0; i < st->iWinHeight; ++i)
+ free (st->blub[i]);
+ free (st->blub);
+ for (i = 0; i < st->dradius; ++i)
+ free (st->blob[i]);
+ if (st->sColor) free (st->sColor);
+ free (st->blob);
+ XFreeGC (dpy, st->gc);
+ free (st);
}
diff --git a/hacks/moire.c b/hacks/moire.c
index 4add457..c688c8a 100644
--- a/hacks/moire.c
+++ b/hacks/moire.c
@@ -123,6 +123,7 @@ moire_init_1 (struct state *st)
gcv.foreground = st->colors[0].pixel;
}
+ if (st->gc) XFreeGC (st->dpy, st->gc);
st->gc = XCreateGC (st->dpy, st->window, GCForeground, &gcv);
}
@@ -240,6 +241,12 @@ moire_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
moire_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ if (st->draw_image)
+ destroy_xshm_image (dpy, st->draw_image, &st->shm_info);
+ XFreeGC (dpy, st->gc);
+ free (st->colors);
+ free (st);
}
XSCREENSAVER_MODULE ("Moire", moire)
diff --git a/hacks/moire2.c b/hacks/moire2.c
index dad9d66..caf47c3 100644
--- a/hacks/moire2.c
+++ b/hacks/moire2.c
@@ -320,6 +320,12 @@ moire2_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
moire2_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->copy_gc);
+ XFreeGC (dpy, st->erase_gc);
+ XFreeGC (dpy, st->window_gc);
+ free (st->colors);
+ free (st);
}
static const char *moire2_defaults [] = {
diff --git a/hacks/munch.c b/hacks/munch.c
index 836731a..fe8f60f 100644
--- a/hacks/munch.c
+++ b/hacks/munch.c
@@ -334,6 +334,7 @@ munch_init (Display *dpy, Window w)
st->mismunch = random() & 1;
else
st->mismunch = get_boolean_resource (st->dpy, "mismunch", "Mismunch");
+ if (mm) free (mm);
st->window_width = xgwa.width;
st->window_height = xgwa.height;
@@ -439,6 +440,11 @@ static void
munch_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ int i;
+ XFreeGC (dpy, st->gc);
+ for (i = 0; i < st->simul; i++)
+ free (st->munchers[i]);
+ free (st->munchers);
free (st);
}
diff --git a/hacks/nerverot.c b/hacks/nerverot.c
index 081dbca..7adc94c 100644
--- a/hacks/nerverot.c
+++ b/hacks/nerverot.c
@@ -1303,7 +1303,11 @@ static void
nerverot_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ int i;
freeBlots (st);
+ for (i = 0; i <= st->colorCount; i++)
+ XFreeGC (dpy, st->gcs[i]);
+ free (st->gcs);
free (st);
}
diff --git a/hacks/noseguy.c b/hacks/noseguy.c
index 726c2a7..bb0ca9f 100644
--- a/hacks/noseguy.c
+++ b/hacks/noseguy.c
@@ -583,7 +583,7 @@ noseguy_init (Display *d, Window w)
unsigned long fg, bg, text_fg, text_bg;
XWindowAttributes xgwa;
Colormap cmap;
- char *fontname;
+ char *fontname, *cname, *s;
XGCValues gcvalues;
st->dpy = d;
st->window = w;
@@ -608,10 +608,12 @@ noseguy_init (Display *d, Window w)
st->xftfont = XftFontOpenXlfd (st->dpy, screen_number (xgwa.screen),
fontname);
+ free (fontname);
+
+ cname = get_string_resource (st->dpy, "textForeground", "Foreground");
XftColorAllocName (st->dpy, xgwa.visual, xgwa.colormap,
- get_string_resource (st->dpy,
- "textForeground", "Foreground"),
- &st->xftcolor);
+ cname, &st->xftcolor);
+ free (cname);
st->xftdraw = XftDrawCreate (st->dpy, st->window, xgwa.visual,
xgwa.colormap);
@@ -621,9 +623,15 @@ noseguy_init (Display *d, Window w)
text_fg = get_pixel_resource (st->dpy, cmap, "textForeground", "Foreground");
text_bg = get_pixel_resource (st->dpy, cmap, "textBackground", "Background");
/* notice when unspecified */
- if (! get_string_resource (st->dpy, "textForeground", "Foreground"))
+ s = get_string_resource (st->dpy, "textForeground", "Foreground");
+ if (s)
+ free (s);
+ else
text_fg = bg;
- if (! get_string_resource (st->dpy, "textBackground", "Background"))
+ s = get_string_resource (st->dpy, "textBackground", "Background");
+ if (s)
+ free (s);
+ else
text_bg = fg;
gcvalues.foreground = fg;
@@ -683,6 +691,25 @@ noseguy_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
textclient_close (st->tc);
+ XftFontClose (dpy, st->xftfont);
+ /* XftColorFree (dpy, st->xgwa.visual, st->xgwa.colormap, st->xftcolor); */
+ XftDrawDestroy (st->xftdraw);
+ XFreeGC (dpy, st->fg_gc);
+ XFreeGC (dpy, st->bg_gc);
+ XFreeGC (dpy, st->text_fg_gc);
+ XFreeGC (dpy, st->text_bg_gc);
+
+# define FP(F) \
+ if (st->F.p) XFreePixmap (dpy, st->F.p); \
+ if (st->F.m) XFreePixmap (dpy, st->F.m)
+ FP (left1);
+ FP (left2);
+ FP (right1);
+ FP (right2);
+ FP (left_front);
+ FP (right_front);
+ FP (front);
+ FP (down);
free (st);
}
diff --git a/hacks/pacman.c b/hacks/pacman.c
index f7282fd..6d2dd85 100644
--- a/hacks/pacman.c
+++ b/hacks/pacman.c
@@ -126,6 +126,8 @@ free_pacman (ModeInfo * mi)
pacmangamestruct * pp = &pacman_games[MI_SCREEN (mi)];
int dir, mouth, i, j, k;
+ if (pp->tiles) free (pp->tiles);
+
if (pp->ghosts != NULL) {
free (pp->ghosts);
pp->ghosts = (ghoststruct *) NULL;
@@ -1249,6 +1251,9 @@ load_pixmaps (Display ** dpy, Window window, pacmangamestruct ** ps)
pp->spritexs, pp->spriteys);
srcy += sw;
}
+ XFreeGC (*dpy, gc);
+ XFreePixmap (*dpy, sprites);
+ XFreePixmap (*dpy, sprites_mask);
}
diff --git a/hacks/pedal.c b/hacks/pedal.c
index 87820be..8997f4a 100644
--- a/hacks/pedal.c
+++ b/hacks/pedal.c
@@ -302,6 +302,9 @@ static void
pedal_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ if (st->eraser) eraser_free (st->eraser);
+ XFreeGC (dpy, st->gc);
+ free (st->points);
free (st);
}
diff --git a/hacks/penetrate.c b/hacks/penetrate.c
index 9148827..8fcb0da 100644
--- a/hacks/penetrate.c
+++ b/hacks/penetrate.c
@@ -951,6 +951,11 @@ static void
penetrate_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->draw_gc);
+ XFreeGC (dpy, st->erase_gc);
+ XFreeGC (dpy, st->level_gc);
+ XFreeFont (dpy, st->font);
+ XFreeFont (dpy, st->scoreFont);
free (st);
}
diff --git a/hacks/petri.c b/hacks/petri.c
index 97299d6..e97c582 100644
--- a/hacks/petri.c
+++ b/hacks/petri.c
@@ -419,7 +419,7 @@ setup_display (struct state *st)
if (osize != cell_size)
{
- if (!st->warned)
+ if (0 && !st->warned)
{
fprintf (stderr,
"%s: throttling cell size from %d to %d because of %dM limit.\n",
@@ -707,11 +707,19 @@ static void
petri_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ if (st->arr) free (st->arr);
+ if (st->head) free (st->head);
+ if (st->tail) free (st->tail);
+ if (st->coloredGCs) {
+ int i;
+ for (i = 0; i < st->count*2; i++)
+ XFreeGC (st->dpy, st->coloredGCs[i]);
+ free (st->coloredGCs);
+ }
free (st);
}
-
static const char *petri_defaults [] = {
".background: black",
".foreground: white",
diff --git a/hacks/phosphor.c b/hacks/phosphor.c
index 2e57b86..374e134 100644
--- a/hacks/phosphor.c
+++ b/hacks/phosphor.c
@@ -185,6 +185,8 @@ phosphor_init (Display *dpy, Window window)
if (!state->font) abort();
}
+ if (fontname) free (fontname);
+
font = state->font;
state->scale = get_integer_resource (dpy, "scale", "Integer");
state->ticks = STATE_MAX + get_integer_resource (dpy, "ticks", "Integer");
@@ -322,6 +324,8 @@ phosphor_init (Display *dpy, Window window)
state->gcs[STATE_MAX + i] = XCreateGC (state->dpy, state->window,
flags, &state->gcv);
}
+
+ free (colors);
}
capture_font_bits (state);
@@ -548,7 +552,6 @@ capture_font_bits (p_state *state)
for (i = 0; i < 256; i++)
state->chars[i] = make_character (state, i);
- state->chars[CURSOR_INDEX] = make_character (state, CURSOR_INDEX);
}
@@ -1392,13 +1395,30 @@ static void
phosphor_free (Display *dpy, Window window, void *closure)
{
p_state *state = (p_state *) closure;
+ int i;
textclient_close (state->tc);
if (state->cursor_timer)
XtRemoveTimeOut (state->cursor_timer);
- /* #### there's more to free here */
-
+ if (state->gc0) XFreeGC (dpy, state->gc0);
+ if (state->gc1) XFreeGC (dpy, state->gc1);
+#ifdef FUZZY_BORDER
+ if (state->gc2) XFreeGC (dpy, state->gc2);
+#endif /* FUZZY_BORDER */
+ for (i = 0; i < state->ticks; i++)
+ if (state->gcs[i]) XFreeGC (dpy, state->gcs[i]);
+ free (state->gcs);
+ for (i = 0; i < 256; i++) {
+ XFreePixmap (dpy, state->chars[i]->pixmap);
+#ifdef FUZZY_BORDER
+ XFreePixmap (dpy, state->chars[i]->pixmap2);
+#endif /* FUZZY_BORDER */
+ free (state->chars[i]);
+ }
+ XDestroyImage (state->font_bits);
+ free (state->chars);
+ free (state->cells);
free (state);
}
diff --git a/hacks/piecewise.c b/hacks/piecewise.c
index 6e6e484..9baa88d 100644
--- a/hacks/piecewise.c
+++ b/hacks/piecewise.c
@@ -61,6 +61,7 @@ typedef struct _fringe {
int mni; /* size of intersection array */
int ni; /* number of intersections */
int *i; /* sorted intersection list */
+ struct _fringe *next0; /* allocation list */
} fringe;
@@ -104,6 +105,8 @@ struct state {
int count, delay, ncolors, colorspeed, color_index, flags, iterations;
int color_iterations;
circle *circles;
+ fringe *fringes;
+ event *events;
};
typedef int (*cut)(struct state *, tree*); /* cut x is <, =, or > 0 given a <, =, or > x for some a */
@@ -335,6 +338,7 @@ static inline void fringe_add_intersection(fringe *f, double x, double y)
f->ni++;
if (f->mni < f->ni) {
f->mni += 2;
+ /* #### valgrind says this leaks at exit */
f->i = realloc(f->i, sizeof(int) * f->mni);
}
f->i[f->ni-1] = rint(atan2(y - f->c->y, x - f->c->x) * X_PI / M_PI);
@@ -345,8 +349,11 @@ static circle *init_circles(struct state *st, int n, int w, int h)
int i, r0, dr, speed;
double v, a;
double minradius, maxradius;
- fringe *s = malloc(sizeof(fringe) * n * 2); /* never freed */
- circle *c = malloc(sizeof(circle) * n);
+ fringe *s = calloc(sizeof(fringe), n * 2);
+ circle *c = calloc(sizeof(circle), n);
+
+ s->next0 = st->fringes;
+ st->fringes = s;
speed = get_integer_resource(st->dpy, "speed", "Speed");
minradius = get_float_resource(st->dpy, "minradius", "Float");
@@ -377,6 +384,8 @@ static circle *init_circles(struct state *st, int n, int w, int h)
c[i].lo->side = 0;
c[i].hi->side = 1;
c[i].lo->mni = c[i].lo->ni = c[i].hi->mni = c[i].hi->ni = 0;
+ if (c[i].lo->i) free (c[i].lo->i);
+ if (c[i].hi->i) free (c[i].hi->i);
c[i].lo->i = c[i].hi->i = 0;
}
@@ -456,7 +465,7 @@ static void event_insert(struct state *st, event **eq, event *e)
static void circle_start_event(struct state *st, event **eq, circle *c)
{
event *s;
- s = malloc(sizeof(event));
+ s = calloc(1, sizeof(event));
s->kind = START;
s->x = c->x;
s->y = c->y - c->r;
@@ -468,7 +477,7 @@ static void circle_start_event(struct state *st, event **eq, circle *c)
static void circle_finish_event(struct state *st, event **eq, circle *c)
{
event *f;
- f = malloc(sizeof(event));
+ f = calloc(1, sizeof(event));
f->kind = FINISH;
f->x = c->x;
f->y = c->y + c->r;
@@ -543,11 +552,11 @@ static void fringe_intersect(struct state *st, event **eq, double y, fringe *lo,
#define CHECK(xi, yi) (y <= yi && ((xi < lo->c->x) ^ lo->side) && ((xi < hi->c->x) ^ hi->side))
#define ADD_CROSS(xi, yi, ilo, ihi) { \
- e = malloc(sizeof(event)); /* #### LEAK */ \
+ e = calloc(1, sizeof(event)); \
e->kind = CROSS; \
e->x = xi; e->y = yi; \
e->lo = ilo; e->hi = ihi; \
- event_insert(st, eq, e); \
+ event_insert(st, eq, e); \
}
if (CHECK(x1, y1)) {
@@ -751,7 +760,7 @@ static void adjust_circle_visibility(circle *c)
int i, j, n, a;
int *in;
n = c->lo->ni + c->hi->ni;
- in = malloc(sizeof(int) * n);
+ in = calloc(sizeof(int), n);
for (i=0;i<c->hi->ni;i++)
in[i] = c->hi->i[i];
for (i=c->lo->ni-1;i>=0;i--)
@@ -960,6 +969,22 @@ static void
piecewise_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ int i;
+ XFreeGC (dpy, st->erase_gc);
+ XFreeGC (dpy, st->draw_gc);
+ for (i = 0; i < st->count; i++) {
+ if (st->circles[i].i) free (st->circles[i].i);
+ if (st->circles[i].lo) {
+ if (st->circles[i].lo->i) free (st->circles[i].lo->i);
+ }
+ }
+ while (st->fringes) {
+ fringe *f = st->fringes;
+ st->fringes = f->next0;
+ free (f);
+ }
+ free (st->circles);
+ free (st->colors);
free (st);
}
diff --git a/hacks/pong.c b/hacks/pong.c
index fe200c3..8c18a1c 100644
--- a/hacks/pong.c
+++ b/hacks/pong.c
@@ -1112,6 +1112,8 @@ pong_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
analogtv_release(st->tv);
+ free(st->inp);
+ if (st->score_font.text_im) XDestroyImage (st->score_font.text_im);
free (st);
}
diff --git a/hacks/popsquares.c b/hacks/popsquares.c
index 3b83fd7..4fc16a7 100644
--- a/hacks/popsquares.c
+++ b/hacks/popsquares.c
@@ -265,6 +265,9 @@ static void
popsquares_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->gc);
+ free (st->colors);
+ free (st->squares);
free (st);
}
diff --git a/hacks/pyro.c b/hacks/pyro.c
index 442ea7f..44bd58a 100644
--- a/hacks/pyro.c
+++ b/hacks/pyro.c
@@ -340,6 +340,10 @@ static void
pyro_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->draw_gc);
+ XFreeGC (dpy, st->erase_gc);
+ free (st->projectiles);
+ free (st->sorted_projectiles);
free (st);
}
diff --git a/hacks/qix.c b/hacks/qix.c
index 1498af7..75721c7 100644
--- a/hacks/qix.c
+++ b/hacks/qix.c
@@ -148,6 +148,7 @@ qix_init (Display *dpy, Window window)
int nlines;
XGCValues gcv;
XWindowAttributes xgwa;
+ int i;
st->dpy = dpy;
st->window = window;
XGetWindowAttributes (st->dpy, st->window, &xgwa);
@@ -243,7 +244,7 @@ qix_init (Display *dpy, Window window)
st->count = nplanes;
}
- st->gcs[0] = (GC *) malloc (st->count * sizeof (GC));
+ st->gcs[0] = (GC *) calloc (st->count, sizeof (GC));
st->gcs[1] = (st->xor_p
? st->gcs[0]
: (GC *) malloc (st->count * sizeof (GC)));
@@ -321,12 +322,11 @@ qix_init (Display *dpy, Window window)
jwxyz_XSetAlphaAllowed (dpy, st->draw_gc, True);
#endif
- st->qixes = (struct qix **) malloc ((st->count + 1) * sizeof (struct qix *));
- st->qixes [st->count] = 0;
- while (st->count--)
+ st->qixes = (struct qix **) calloc ((st->count + 1), sizeof (struct qix *));
+ for (i = 0; i < st->count; i++)
{
- st->qixes [st->count] = init_one_qix (st, nlines);
- st->qixes [st->count]->id = st->count;
+ st->qixes [i] = init_one_qix (st, nlines);
+ st->qixes [i]->id = i;
}
# ifdef HAVE_JWXYZ
@@ -566,10 +566,27 @@ static void
qix_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
- if (st->gcs[0])
- free (st->gcs[0]);
- if (st->gcs[1] && st->gcs[0] != st->gcs[1])
- free (st->gcs[1]);
+ int i;
+
+# if 0 /* 2001 jwz was a total jerk */
+ for (i = 0; i < 2; i++) {
+ int j;
+ if (st->gcs[i]) {
+ for (j = 0; i < st->count; j++)
+ if (st->gcs[i][j]) XFreeGC (dpy, st->gcs[i][j]);
+ free (st->gcs[i]);
+ }
+ }
+# endif
+ for (i = 0; i < st->count; i++) {
+ struct qix *q = st->qixes[i];
+ free (q->lines);
+ free (q);
+ }
+ if (st->draw_gc)
+ free (st->draw_gc);
+ if (st->erase_gc && st->draw_gc != st->erase_gc)
+ free (st->erase_gc);
free (st->qixes);
free (st);
}
diff --git a/hacks/rd-bomb.c b/hacks/rd-bomb.c
index 33cb602..9628619 100644
--- a/hacks/rd-bomb.c
+++ b/hacks/rd-bomb.c
@@ -446,6 +446,7 @@ rd_init (Display *dpy, Window win)
ok = True;
if (!ok)
st->pdepth = 16;
+ free (pfv);
}
st->cmap = st->xgwa.colormap;
@@ -544,6 +545,16 @@ rd_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
rd_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ free (st->r1);
+ free (st->r2);
+ free (st->r1b);
+ free (st->r2b);
+ free (st->colors);
+ free (st->mc);
+ XFreeGC (dpy, st->gc);
+ destroy_xshm_image (dpy, st->image, &st->shm_info);
+ free (st);
}
XSCREENSAVER_MODULE_2 ("RDbomb", rdbomb, rd)
diff --git a/hacks/recanim.c b/hacks/recanim.c
index 9ef0e7a..69bf385 100644
--- a/hacks/recanim.c
+++ b/hacks/recanim.c
@@ -48,10 +48,12 @@ struct record_anim_state {
Window window;
int frame_count;
int target_frames;
+ int fps;
XWindowAttributes xgwa;
char *title;
int pct;
int fade_frames;
+ double start_time;
# ifdef USE_GL
char *data, *data2;
# else /* !USE_GL */
@@ -77,6 +79,21 @@ double_time (void)
}
+static double
+double_timewarp (void)
+{
+ struct timeval now;
+# ifdef GETTIMEOFDAY_TWO_ARGS
+ struct timezone tzp;
+ screenhack_record_anim_gettimeofday(&now, &tzp);
+# else
+ screenhack_record_anim_gettimeofday(&now);
+# endif
+
+ return (now.tv_sec + ((double) now.tv_usec * 0.000001));
+}
+
+
/* Some of the hacks set their timing based on the real-world wall clock,
so to make the animations record at a sensible speed, we need to slow
down that clock by discounting the time taken up by snapshotting and
@@ -131,13 +148,15 @@ screenhack_record_anim_init (Screen *screen, Window window, int target_frames)
st = (record_anim_state *) calloc (1, sizeof(*st));
+ st->fps = 30;
st->screen = screen;
st->window = window;
st->target_frames = target_frames;
+ st->start_time = double_time();
st->frame_count = 0;
- st->fade_frames = 30 * 1.5;
+ st->fade_frames = st->fps * 1.5;
- if (st->fade_frames >= (st->target_frames / 2) - 30)
+ if (st->fade_frames >= (st->target_frames / 2) - st->fps)
st->fade_frames = 0;
# ifdef HAVE_GDK_PIXBUF
@@ -180,6 +199,10 @@ screenhack_record_anim_init (Screen *screen, Window window, int target_frames)
# ifndef HAVE_JWXYZ
XFetchName (dpy, st->window, &st->title);
+ {
+ char *s = strchr(st->title, ':');
+ if (s) *s = 0;
+ }
# endif /* !HAVE_JWXYZ */
return st;
@@ -311,9 +334,36 @@ screenhack_record_anim (record_anim_state *st)
int pct = 100 * (st->frame_count + 1) / st->target_frames;
if (pct != st->pct && st->title)
{
+ double end = st->target_frames / (double) st->fps;
+ double secs0 = double_time() - st->start_time;
+ double secs = double_timewarp() - st->start_time;
+ double rate = secs / secs0;
+ double secs2 = (end - secs) / rate;
Display *dpy = DisplayOfScreen (st->screen);
- char *t2 = (char *) malloc (strlen(st->title) + 20);
- sprintf (t2, "%s: %d%%", st->title, pct);
+ char *t2 = (char *) malloc (strlen(st->title) + 100);
+ if (secs2 < 0) secs2 = 0;
+
+ sprintf (t2, "%s: %3d%% done,"
+ " %d:%02d:%02d in"
+ " %d:%02d:%02d;"
+ " %d%% speed,"
+ " %d:%02d:%02d remaining",
+ st->title, pct,
+
+ ((int) secs) / (60*60),
+ (((int) secs) / 60) % 60,
+ ((int) secs) % 60,
+
+ ((int) secs0) / (60*60),
+ (((int) secs0) / 60) % 60,
+ ((int) secs0) % 60,
+
+ (int) (100 * rate),
+
+ ((int) secs2) / (60*60),
+ (((int) secs2) / 60) % 60,
+ ((int) secs2) % 60
+ );
XStoreName (dpy, st->window, t2);
XSync (dpy, 0);
free (t2);
@@ -371,10 +421,10 @@ screenhack_record_anim_free (record_anim_state *st)
"ffmpeg"
" -hide_banner"
" -v 16"
- " -framerate 30" /* rate of input: must be before -i */
+ " -framerate %d" /* rate of input: must be before -i */
" -i '%s-%%06d.%s'"
- " -r 30", /* rate of output: must be after -i */
- progname, type);
+ " -r %d", /* rate of output: must be after -i */
+ st->fps, progname, type, st->fps);
if (soundtrack)
sprintf (cmd + strlen(cmd),
" -i '%s' -map 0:v:0 -map 1:a:0 -acodec aac",
diff --git a/hacks/ripples.c b/hacks/ripples.c
index 447a455..7e39643 100644
--- a/hacks/ripples.c
+++ b/hacks/ripples.c
@@ -788,6 +788,11 @@ init_ripples(struct state *st, int ndrops, int splash)
{
int i;
+ if (st->bufferA) free (st->bufferA);
+ if (st->bufferB) free (st->bufferB);
+ if (st->temp) free (st->temp);
+ if (st->dirty_buffer) free (st->dirty_buffer);
+
st->bufferA = (short *)calloc(st->width * st->height, sizeof(*st->bufferA));
st->bufferB = (short *)calloc(st->width * st->height, sizeof(*st->bufferB));
st->temp = (short *)calloc(st->width * st->height, sizeof(*st->temp));
@@ -1008,6 +1013,7 @@ ripples_draw (Display *dpy, Window window, void *closure)
XWindowAttributes xgwa;
XGetWindowAttributes(st->dpy, st->window, &xgwa);
st->start_time = time ((time_t *) 0);
+ if (st->orig_map) XDestroyImage (st->orig_map);
st->orig_map = XGetImage (st->dpy, st->window, 0, 0,
xgwa.width, xgwa.height,
~0L, ZPixmap);
@@ -1064,6 +1070,13 @@ static void
ripples_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ if (st->bufferA) free (st->bufferA);
+ if (st->bufferB) free (st->bufferB);
+ if (st->temp) free (st->temp);
+ if (st->dirty_buffer) free (st->dirty_buffer);
+ if (st->orig_map) XDestroyImage (st->orig_map);
+ if (st->buffer_map) destroy_xshm_image (dpy, st->buffer_map, &st->shm_info);
+ XFreeGC (dpy, st->gc);
free (st);
}
diff --git a/hacks/rocks.c b/hacks/rocks.c
index 5a976df..fea3660 100644
--- a/hacks/rocks.c
+++ b/hacks/rocks.c
@@ -505,6 +505,17 @@ rocks_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
rocks_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ int i;
+ for (i = 0; i < MAX_SIZE; i++)
+ if (st->pixmaps[i]) XFreePixmap (dpy, st->pixmaps[i]);
+ for (i = 0; i < st->ncolors; i++)
+ if (st->draw_gcs[i]) XFreeGC (dpy, st->draw_gcs[i]);
+ XFreeGC (dpy, st->erase_gc);
+ free (st->colors);
+ free (st->rocks);
+ free (st->draw_gcs);
+ free (st);
}
diff --git a/hacks/rorschach.c b/hacks/rorschach.c
index 6b2d7a3..124ac73 100644
--- a/hacks/rorschach.c
+++ b/hacks/rorschach.c
@@ -181,6 +181,7 @@ static void
rorschach_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->draw_gc);
free (st);
}
diff --git a/hacks/rotzoomer.c b/hacks/rotzoomer.c
index 58f805c..0801819 100644
--- a/hacks/rotzoomer.c
+++ b/hacks/rotzoomer.c
@@ -336,6 +336,7 @@ set_mode(struct state *st)
char *s = get_string_resource (st->dpy, "mode", "Mode");
if (!s || !*s || !strcasecmp (s, "random"))
{
+ free (s);
switch (random() % 4) {
case 0: s = "stationary"; break;
case 1: s = "move"; break;
@@ -370,8 +371,15 @@ init_hack (struct state *st)
set_mode (st);
st->start_time = time ((time_t *) 0);
+
+ if (st->zoom_box) {
+ for (i = 0; i < st->num_zoom; i++)
+ if (st->zoom_box[i]) free (st->zoom_box[i]);
+ free (st->zoom_box);
+ }
st->zoom_box = calloc (st->num_zoom, sizeof (struct zoom_area *));
for (i = 0; i < st->num_zoom; i++) {
+ if (st->zoom_box[i]) free (st->zoom_box[i]);
st->zoom_box[i] = create_zoom (st);
}
@@ -395,6 +403,7 @@ rotzoomer_draw (Display *disp, Window win, void *closure)
st->img_loader = load_image_async_simple (st->img_loader, 0, 0, 0, 0, 0);
if (! st->img_loader) { /* just finished */
if (! st->pm) abort();
+ if (st->orig_map) XDestroyImage (st->orig_map);
st->orig_map = XGetImage (st->dpy, st->pm,
0, 0, st->width, st->height,
~0L, ZPixmap);
@@ -540,6 +549,15 @@ rotzoomer_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
if (st->pm) XFreePixmap (dpy, st->pm);
+ if (st->gc) XFreeGC (dpy, st->gc);
+ if (st->orig_map) XDestroyImage (st->orig_map);
+ if (st->buffer_map) destroy_xshm_image (dpy, st->buffer_map, &st->shm_info);
+ if (st->zoom_box) {
+ int i;
+ for (i = 0; i < st->num_zoom; i++)
+ if (st->zoom_box[i]) free (st->zoom_box[i]);
+ free (st->zoom_box);
+ }
free (st);
}
diff --git a/hacks/screenhack.c b/hacks/screenhack.c
index addc960..fdd2e43 100644
--- a/hacks/screenhack.c
+++ b/hacks/screenhack.c
@@ -137,6 +137,9 @@ const char *progname; /* used by hacks in error messages */
const char *progclass; /* used by ../utils/resources.c */
Bool mono_p; /* used by hacks */
+#ifdef EXIT_AFTER
+static time_t exit_after; /* Exit gracefully after N seconds */
+#endif
static XrmOptionDescRec default_options [] = {
{ "-root", ".root", XrmoptionNoArg, "True" },
@@ -151,11 +154,13 @@ static XrmOptionDescRec default_options [] = {
# ifdef DEBUG_PAIR
{ "-pair", ".pair", XrmoptionNoArg, "True" },
-# endif /* DEBUG_PAIR */
-
+# endif
# ifdef HAVE_RECORD_ANIM
{ "-record-animation", ".recordAnim", XrmoptionSepArg, 0 },
-# endif /* HAVE_RECORD_ANIM */
+# endif
+# ifdef EXIT_AFTER
+ { "-exit-after", ".exitAfter", XrmoptionSepArg, 0 },
+# endif
{ 0, 0, 0, 0 }
};
@@ -473,6 +478,12 @@ screenhack_table_handle_events (Display *dpy,
if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput))
XtAppProcessEvent (app, XtIMTimer|XtIMAlternateInput);
}
+
+# ifdef EXIT_AFTER
+ if (exit_after != 0 && time ((time_t *) 0) >= exit_after)
+ return False;
+# endif
+
return True;
}
@@ -601,11 +612,11 @@ run_screenhack_table (Display *dpy,
#endif
ft->free_cb (dpy, window, closure);
- if (fpst) fps_free (fpst);
+ if (fpst) ft->fps_free (fpst);
#ifdef DEBUG_PAIR
if (window2) ft->free_cb (dpy, window2, closure2);
- if (fpst2) fps_free (fpst2);
+ if (fpst2) ft->fps_free (fpst2);
#endif
}
@@ -707,9 +718,9 @@ main (int argc, char **argv)
Window window2 = 0;
Widget toplevel2 = 0;
# endif
-#ifdef HAVE_RECORD_ANIM
+# ifdef HAVE_RECORD_ANIM
record_anim_state *anim_state = 0;
-#endif
+# endif
XtAppContext app;
Bool root_p;
Window on_window = 0;
@@ -864,6 +875,15 @@ main (int argc, char **argv)
root_p = get_boolean_resource (dpy, "root", "Boolean");
+# ifdef EXIT_AFTER
+ {
+ int secs = get_integer_resource (dpy, "exitAfter", "Integer");
+ exit_after = (secs > 0
+ ? time((time_t *) 0) + secs
+ : 0);
+ }
+# endif
+
{
char *s = get_string_resource (dpy, "windowID", "WindowID");
if (s && *s)
diff --git a/hacks/screenhack.h b/hacks/screenhack.h
index 78621ab..16e629b 100644
--- a/hacks/screenhack.h
+++ b/hacks/screenhack.h
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1992-2015 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -58,7 +58,8 @@
PREFIX ## _reshape, \
PREFIX ## _event, \
PREFIX ## _free, \
- 0, SCREENHACK_VISUAL }; \
+ 0, fps_free, \
+ SCREENHACK_VISUAL }; \
XSCREENSAVER_LINK (NAME ## _xscreensaver_function_table)
#define XSCREENSAVER_MODULE(CLASS,PREFIX) \
diff --git a/hacks/screenhackI.h b/hacks/screenhackI.h
index b53ef74..1fafa91 100644
--- a/hacks/screenhackI.h
+++ b/hacks/screenhackI.h
@@ -147,6 +147,7 @@ struct xscreensaver_function_table {
Bool (*event_cb) (Display *, Window, void *, XEvent *);
void (*free_cb) (Display *, Window, void *);
void (*fps_cb) (Display *, Window, fps_state *, void *);
+ void (*fps_free) (fps_state *);
# ifndef HAVE_JWXYZ
Visual * (*pick_visual_hook) (Screen *);
diff --git a/hacks/shadebobs.c b/hacks/shadebobs.c
index 7a1a0ff..d796162 100644
--- a/hacks/shadebobs.c
+++ b/hacks/shadebobs.c
@@ -454,12 +454,14 @@ shadebobs_free (Display *dpy, Window window, void *closure)
struct state *st = (struct state *) closure;
free( st->anSinTable );
free( st->anCosTable );
- /* free( st->pImage->data ); */
+ if (st->sColor) free (st->sColor);
+ XFreeGC (dpy, st->gc);
XDestroyImage( st->pImage );
for( st->iShadeBob=0; st->iShadeBob<st->nShadeBobCount; st->iShadeBob++ )
free( st->aShadeBobs[ st->iShadeBob ].anDeltaMap );
free( st->aShadeBobs );
free( st->aiColorVals );
+ free(st);
}
diff --git a/hacks/slidescreen.c b/hacks/slidescreen.c
index c5656f3..aaa4762 100644
--- a/hacks/slidescreen.c
+++ b/hacks/slidescreen.c
@@ -91,6 +91,8 @@ slidescreen_init (Display *dpy, Window window)
XParseColor (st->dpy, xgwa.colormap, "black", &bgc);
if (!XParseColor (st->dpy, xgwa.colormap, bgs, &bgc))
XParseColor (st->dpy, xgwa.colormap, "gray", &fgc);
+ if (fgs) free (fgs);
+ if (bgs) free (bgs);
fg_ok = XAllocColor (st->dpy, xgwa.colormap, &fgc);
bg_ok = XAllocColor (st->dpy, xgwa.colormap, &bgc);
diff --git a/hacks/speedmine.c b/hacks/speedmine.c
index 17a3f2a..e16cb5f 100644
--- a/hacks/speedmine.c
+++ b/hacks/speedmine.c
@@ -1563,6 +1563,17 @@ static void
speedmine_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ int i;
+ XFreeGC (dpy, st->draw_gc);
+ XFreeGC (dpy, st->erase_gc);
+ XFreeGC (dpy, st->tunnelend_gc);
+ XFreeGC (dpy, st->stars_gc);
+ XFreeGC (dpy, st->stars_erase_gc);
+ for (i = 0; i < MAX_COLORS; i++) {
+ if (st->ground_gcs[i]) XFreeGC (dpy, (st->ground_gcs[i]));
+ if (st->wall_gcs[i]) XFreeGC (dpy, (st->wall_gcs[i]));
+ if (st->bonus_gcs[i]) XFreeGC (dpy, (st->bonus_gcs[i]));
+ }
free (st);
}
diff --git a/hacks/squiral.c b/hacks/squiral.c
index a38e060..c1fa16f 100644
--- a/hacks/squiral.c
+++ b/hacks/squiral.c
@@ -253,6 +253,12 @@ static void
squiral_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ if (st->worms) free (st->worms);
+ if (st->fill) free (st->fill);
+/* if (st->ncolors)
+ free_colors (st->xgwa.screen, st->xgwa.cmap, st->colors, st->ncolors); */
+ XFreeGC (dpy, st->draw_gc);
+ XFreeGC (dpy, st->erase_gc);
free (st);
}
diff --git a/hacks/starfish.c b/hacks/starfish.c
index 5e94144..a49b98f 100644
--- a/hacks/starfish.c
+++ b/hacks/starfish.c
@@ -458,6 +458,7 @@ starfish_init (Display *dpy, Window window)
st->blob_p = !(random() % 3);
else
fprintf (stderr, "%s: mode must be blob, zoom, or random", progname);
+ if (s) free (s);
if (st->blob_p)
st->delay *= 3;
@@ -520,6 +521,9 @@ static void
starfish_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->gc);
+ free_starfish (st->starfish);
+ free (st->colors);
free (st);
}
diff --git a/hacks/strange.c b/hacks/strange.c
index 89e9a3b..c630f71 100644
--- a/hacks/strange.c
+++ b/hacks/strange.c
@@ -175,7 +175,7 @@ DBL_To_PRM( 1.0-exp( -16.0*(a)/UNIT2 ) )
#if defined(__BIGGEST_ALIGNMENT__) \
&& (defined(__GNUC__) \
- && (__GNUC__ == 4 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 5) \
+ && (__GNUC__ == 4 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 5) \
|| defined(__clang__))
# define ALIGNED __attribute__((aligned(__BIGGEST_ALIGNMENT__)))
# define ALIGN_HINT(ptr) __builtin_assume_aligned((ptr), __BIGGEST_ALIGNMENT__)
diff --git a/hacks/substrate.c b/hacks/substrate.c
index 278a3bd..e0d842a 100644
--- a/hacks/substrate.c
+++ b/hacks/substrate.c
@@ -735,6 +735,12 @@ static void
substrate_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ if (st->f->cgrid) free(st->f->cgrid);
+ if (st->f->cracks) free(st->f->cracks);
+ if (st->f->off_img) free(st->f->off_img);
+ if (st->f->parsedcolors) free(st->f->parsedcolors);
+ XFreeGC (dpy, st->fgc);
+ free (st->f);
free (st);
}
diff --git a/hacks/t3d.c b/hacks/t3d.c
index 959d24a..a62c554 100644
--- a/hacks/t3d.c
+++ b/hacks/t3d.c
@@ -372,6 +372,9 @@ initialize (struct state *st)
printf("fast\t%i\nmarks\t%i\nwait\t%i\n",st->fastch,st->maxk,st->timewait);
#endif
+ free (xgc);
+ free (xorgc);
+ free (xandgc);
}
static void fill_kugel(struct state *st, int i, Pixmap buf, int setcol);
@@ -936,6 +939,13 @@ t3d_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
t3d_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->gc);
+ XFreeGC (dpy, st->orgc);
+ XFreeGC (dpy, st->andgc);
+ XFreePixmap (dpy, st->buffer);
+ free (st->zeit);
+ free (st);
}
diff --git a/hacks/tessellimage.c b/hacks/tessellimage.c
index b9a8bd9..40c5b94 100644
--- a/hacks/tessellimage.c
+++ b/hacks/tessellimage.c
@@ -300,6 +300,7 @@ analyze (struct state *st)
progname, s);
exit (1);
}
+ if (s) free (s);
}
flush_cache (st);
@@ -966,6 +967,7 @@ tessellimage_free (Display *dpy, Window window, void *closure)
if (st->image) XFreePixmap (dpy, st->image);
if (st->output) XFreePixmap (dpy, st->output);
if (st->delta) XDestroyImage (st->delta);
+ if (st->img) XDestroyImage (st->img);
free (st);
}
diff --git a/hacks/truchet.c b/hacks/truchet.c
index d0276f7..d635146 100644
--- a/hacks/truchet.c
+++ b/hacks/truchet.c
@@ -529,6 +529,10 @@ truchet_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
truchet_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->agc);
+ XFreeGC (dpy, st->bgc);
+ free (st);
}
diff --git a/hacks/twang.c b/hacks/twang.c
index 1b2cdf6..33b9cd3 100644
--- a/hacks/twang.c
+++ b/hacks/twang.c
@@ -628,6 +628,14 @@ twang_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
if (st->pm) XFreePixmap (dpy, st->pm);
+ XFreeGC (dpy, st->backgroundGC);
+ XFreeGC (dpy, st->foregroundGC);
+ XFreeGC (dpy, st->borderGC);
+ if (st->sourceImage) XDestroyImage (st->sourceImage);
+ if (st->workImage) destroy_xshm_image (st->dpy, st->workImage, &st->shmInfo);
+ if (st->tiles) free (st->tiles);
+ if (st->sortedTiles) free (st->sortedTiles);
+
free (st);
}
diff --git a/hacks/vermiculate.c b/hacks/vermiculate.c
index 9364791..0accbd9 100644
--- a/hacks/vermiculate.c
+++ b/hacks/vermiculate.c
@@ -65,7 +65,7 @@ linedata;
static const struct stringAndSpeed
{
- char *str;
+ const char * const str;
int speed;
}
sampleStrings[] =
@@ -99,7 +99,8 @@ struct state {
int hei, wid, speed;
Bool erasing, cleared, autopal;
- char *instring;
+ char *oinstring; /* allocated */
+ const char *instring; /* consumed */
int max_ticks;
real sinof[degs], cosof[degs], tanof[degs];
@@ -435,7 +436,8 @@ maininit (struct state *st)
if (!st->instring)
{
int n = random1 (sizeof (sampleStrings) / sizeof (sampleStrings[0]));
- st->instring = sampleStrings[n].str;
+ if (st->oinstring) free (st->oinstring);
+ st->instring = st->oinstring = strdup (sampleStrings[n].str);
st->speed = sampleStrings[n].speed;
}
st->boxh = 10;
@@ -745,7 +747,8 @@ vermiculate_draw (Display *dpy, Window window, void *closure)
if (tick++ > st->max_ticks && !had_instring)
{
tick = 0;
- st->instring = 0;
+ if (st->oinstring) free (st->oinstring);
+ st->instring = st->oinstring = 0;
maininit(st);
st->reset_p = True;
st->autopal = False;
@@ -764,9 +767,12 @@ vermiculate_init (Display *d, Window w)
st->dpy = d;
st->window = w;
st->reset_p = 1;
- st->instring = get_string_resource (st->dpy, "instring", "Instring");
- if (st->instring && !*st->instring)
- st->instring = 0;
+ st->oinstring = get_string_resource (st->dpy, "instring", "Instring");
+ if (st->oinstring && !*st->oinstring) {
+ free (st->oinstring);
+ st->oinstring = 0;
+ }
+ st->instring = st->oinstring;
st->max_ticks = get_integer_resource (st->dpy, "ticks", "Integer");
st->speed = get_integer_resource (st->dpy, "speed", "Speed");
@@ -1189,11 +1195,9 @@ static void
vermiculate_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
-
- if (st->point)
- {
- free(st->point);
- }
+ XFreeGC (dpy, st->mygc);
+ if (st->oinstring) free (st->oinstring);
+ if (st->point) free(st->point);
free (st);
}
diff --git a/hacks/vfeedback.c b/hacks/vfeedback.c
index 5b482a7..a2f32a0 100644
--- a/hacks/vfeedback.c
+++ b/hacks/vfeedback.c
@@ -599,6 +599,7 @@ vfeedback_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
analogtv_release (st->tv);
+ free (st->rec.input);
if (st->pix)
XFreePixmap (dpy, st->pix);
XFreeGC (dpy, st->gc);
diff --git a/hacks/wander.c b/hacks/wander.c
index 50fe255..37f6e1b 100644
--- a/hacks/wander.c
+++ b/hacks/wander.c
@@ -241,6 +241,7 @@ wander_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
XFreeGC (st->dpy, st->context);
+ if (st->eraser) eraser_free (st->eraser);
free (st);
}
diff --git a/hacks/whirlwindwarp.c b/hacks/whirlwindwarp.c
index 3525e49..a55328c 100644
--- a/hacks/whirlwindwarp.c
+++ b/hacks/whirlwindwarp.c
@@ -479,6 +479,8 @@ static void
whirlwindwarp_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->draw_gc);
+ XFreeGC (dpy, st->erase_gc);
free (st);
}
diff --git a/hacks/whirlygig.c b/hacks/whirlygig.c
index 22c7ddd..8c3bd1f 100644
--- a/hacks/whirlygig.c
+++ b/hacks/whirlygig.c
@@ -655,6 +655,13 @@ whirlygig_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
whirlygig_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ free (st->info);
+ XFreeGC (dpy, st->fgc);
+ XFreeGC (dpy, st->bgc);
+ if (st->xmode_str) free (st->xmode_str);
+ if (st->ymode_str) free (st->ymode_str);
+ free (st);
}
diff --git a/hacks/wormhole.c b/hacks/wormhole.c
index f28c5b2..602be98 100644
--- a/hacks/wormhole.c
+++ b/hacks/wormhole.c
@@ -281,15 +281,13 @@ static void moveColorChanger( color_changer * ch )
}
-#if 0
-static void destroyColorChanger( color_changer * ch )
+static void destroyColorChanger( struct state *st, color_changer * ch )
{
int q;
for ( q = 0; q < ch->max; q++ )
- XFreeColors( st->dpy, *cmap, &( ch->shade[q].pixel ), 1, 0 );
+ XFreeColors( st->dpy, st->cmap, &( ch->shade[q].pixel ), 1, 0 );
free( ch->shade );
}
-#endif
static void resizeWormhole( struct state *st, wormhole * worm )
{
@@ -353,21 +351,26 @@ static void initWormhole( struct state *st, wormhole * worm, Display * display,
initColorChanger( st, &(worm->changer) );
worm->num_stars = 64;
- worm->stars = (starline **)malloc( sizeof(starline *) * worm->num_stars );
- for ( i = 0; i < worm->num_stars; i++ )
+ worm->stars = (starline **)calloc(sizeof(starline *), worm->num_stars);
+ for ( i = 0; i < worm->num_stars; i++ ) {
+ if (worm->stars[i]) free (worm->stars[i]);
worm->stars[i] = NULL;
+ }
}
-#if 0
-static void destroyWormhole( wormhole * worm )
+static void destroyWormhole( struct state *st, wormhole * worm )
{
- destroyColorChanger( &(worm->changer), st->dpy, cmap );
- if (work->work != st->window)
+ int i;
+ destroyColorChanger( st, &(worm->changer));
+ if (worm->work != st->window) {
XFreePixmap( st->dpy, worm->work );
- free( worm->stars );
+ worm->work = 0;
+ }
+ for (i = 0; i < worm->num_stars; i++)
+ if (worm->stars[i]) free(worm->stars[i]);
+ free(worm->stars);
}
-#endif
static double Cos( int a )
{
@@ -696,6 +699,8 @@ static void
wormhole_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ destroyWormhole (st, &st->worm);
+ XFreeGC (dpy, st->gc);
free (st);
}
diff --git a/hacks/xanalogtv.c b/hacks/xanalogtv.c
index 80cc7d9..f3842dc 100644
--- a/hacks/xanalogtv.c
+++ b/hacks/xanalogtv.c
@@ -88,7 +88,7 @@ struct state {
chansetting *cs;
int change_now;
- int colorbars_only_p;
+ Bool colorbars_only_p, no_colorbars_p;
};
@@ -179,7 +179,7 @@ update_smpte_colorbars(analogtv_input *input)
xpos, ypos, black_ntsc);
}
}
- ypos += st->ugly_font.char_h*5/2;
+ ypos += (st->ugly_font.char_h * ANALOGTV_SCALE)*5/2;
if (st->logo)
{
@@ -191,7 +191,7 @@ update_smpte_colorbars(analogtv_input *input)
w2, h2);
}
- ypos += 58;
+ ypos += 58 * ANALOGTV_SCALE;
#if 0
analogtv_draw_string_centered(input, &st->ugly_font,
@@ -254,6 +254,7 @@ hack_resources (Display *dpy)
value.addr = buf2;
value.size = strlen(buf2);
XrmPutResource (&db, buf1, "String", &value);
+ free (val);
}
#endif /* HAVE_JWXYZ */
}
@@ -351,17 +352,23 @@ static void add_stations(struct state *st)
static void load_station_images(struct state *st)
{
int i;
+ char *img_file = get_string_resource (st->dpy, "image", "Image");
+ XImage *ximage = 0;
+
for (i = 0; i < MAX_STATIONS; i++) {
analogtv_input *input = st->stations[i];
st->chansettings[i].image_loaded_p = True;
- if (i == 0 || /* station 0 is always colorbars */
- st->colorbars_only_p) {
+ if (!st->no_colorbars_p &&
+ (i == 0 || /* station 0 is always colorbars */
+ st->colorbars_only_p)) {
input->updater = update_smpte_colorbars;
input->do_teletext=1;
}
#ifdef USE_TEST_PATTERNS
- else if (random()%5==0) {
+ else if (!st->no_colorbars_p &&
+ !(img_file && *img_file) &&
+ ((random() % 5) == 0)) {
int count = 0, j;
for (count = 0; st->test_patterns[count]; count++)
;
@@ -372,12 +379,31 @@ static void load_station_images(struct state *st)
analogtv_setup_teletext(input);
}
#endif
- else {
+ else if (img_file && *img_file) {
+
+ /* Load a single image file into every free channel. */
+ if (! ximage) {
+ int w, h;
+ Pixmap p = file_to_pixmap (st->dpy, st->window, img_file, &w, &h, 0);
+ ximage = XGetImage (st->dpy, p, 0, 0, w, h, ~0L, ZPixmap);
+ XFreePixmap (st->dpy, p);
+ }
+
+ analogtv_input *input = st->stations[i];
+ analogtv_setup_sync(input, 1, (random()%20)==0);
+ analogtv_load_ximage (st->tv, input, ximage, 0, 0, 0, 0, 0);
+ analogtv_setup_teletext(input);
+ st->chansettings[i].image_loaded_p = True;
+
+ } else {
analogtv_load_random_image(st);
input->do_teletext=1;
st->chansettings[i].image_loaded_p = False;
}
}
+
+ if (img_file) free (img_file);
+ if (ximage) XDestroyImage (ximage);
}
@@ -399,6 +425,8 @@ xanalogtv_init (Display *dpy, Window window)
st->colorbars_only_p =
get_boolean_resource(dpy, "colorbarsOnly", "ColorbarsOnly");
+ st->no_colorbars_p =
+ get_boolean_resource(dpy, "noColorbars", "NoColorbars");
/* if (!st->colorbars_only_p) */
{
@@ -618,9 +646,13 @@ static void
xanalogtv_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ int i;
analogtv_release(st->tv);
if (st->logo) XDestroyImage (st->logo);
if (st->logo_mask) XDestroyImage (st->logo_mask);
+ if (st->ugly_font.text_im) XDestroyImage (st->ugly_font.text_im);
+ for (i = 0; i < MAX_STATIONS; i++)
+ if (st->stations[i]) free (st->stations[i]);
# ifdef USE_TEST_PATTERNS
{
int i;
@@ -639,6 +671,8 @@ static const char *xanalogtv_defaults [] = {
"*grabDesktopImages: False", /* HAVE_JWXYZ */
"*chooseRandomImages: True", /* HAVE_JWXYZ */
"*colorbarsOnly: False",
+ "*noColorbars: False",
+ "*image: ",
ANALOGTV_DEFAULTS
0,
};
@@ -646,6 +680,8 @@ static const char *xanalogtv_defaults [] = {
static XrmOptionDescRec xanalogtv_options [] = {
{ "-delay", ".delay", XrmoptionSepArg, 0 },
{ "-colorbars-only", ".colorbarsOnly", XrmoptionNoArg, "True" },
+ { "-no-colorbars", ".noColorbars", XrmoptionNoArg, "True" },
+ { "-image", ".image", XrmoptionSepArg, 0 },
ANALOGTV_OPTIONS
{ 0, 0, 0, 0 }
};
diff --git a/hacks/xflame.c b/hacks/xflame.c
index 1037460..d2273b1 100644
--- a/hacks/xflame.c
+++ b/hacks/xflame.c
@@ -202,8 +202,8 @@ InitFlame(struct state *st)
st->fheight = st->height / 2;
if (st->flame) free (st->flame);
- st->flame = (unsigned char *) malloc((st->fwidth + 2) * (st->fheight + 2)
- * sizeof(unsigned char));
+ st->flame = (unsigned char *) calloc((st->fwidth + 2) * (st->fheight + 2),
+ sizeof(unsigned char));
if (!st->flame)
{
@@ -656,7 +656,7 @@ loadBitmap (struct state *st)
int blur = 0;
# ifdef HAVE_JWXYZ
- const char *bitmap_name = "(default)"; /* #### always use builtin */
+ char *bitmap_name = strdup("(default)"); /* #### always use builtin */
# else
char *bitmap_name = get_string_resource (st->dpy, "bitmap", "Bitmap");
# endif
@@ -671,6 +671,8 @@ loadBitmap (struct state *st)
else
image = file_to_ximage (st->dpy, st->visual, bitmap_name);
+ if (bitmap_name) free (bitmap_name);
+
if (! image) return 0;
while (image->width < st->width / 10 &&
@@ -769,6 +771,13 @@ xflame_event (Display *dpy, Window window, void *closure, XEvent *event)
static void
xflame_free (Display *dpy, Window window, void *closure)
{
+ struct state *st = (struct state *) closure;
+ if (st->xim)
+ destroy_xshm_image (dpy, st->xim, &st->shminfo);
+ free (st->theim);
+ free (st->flame);
+ XFreeGC (dpy, st->gc);
+ free (st);
}
diff --git a/hacks/ximage-loader.c b/hacks/ximage-loader.c
index 382699b..cb86ab3 100644
--- a/hacks/ximage-loader.c
+++ b/hacks/ximage-loader.c
@@ -87,8 +87,13 @@ make_ximage (Display *dpy, Visual *visual, const char *filename,
g_type_init ();
# endif
# endif
- gdk_pixbuf_xlib_init (dpy, DefaultScreen (dpy));
- xlib_rgb_init (dpy, DefaultScreenOfDisplay (dpy));
+ if (dpy)
+ {
+ /* Turns out gdk-pixbuf works even if you don't have display
+ connection, which is good news for analogtv-cli. */
+ gdk_pixbuf_xlib_init (dpy, DefaultScreen (dpy));
+ xlib_rgb_init (dpy, DefaultScreenOfDisplay (dpy));
+ }
initted = 1;
}
@@ -119,6 +124,7 @@ make_ximage (Display *dpy, Visual *visual, const char *filename,
pb = gdk_pixbuf_new_from_stream (s, 0, &gerr);
g_input_stream_close (s, NULL, NULL);
+ /* #### valgrind on xflame says there's a small leak in s? */
g_object_unref (s);
if (! pb)
@@ -198,6 +204,7 @@ make_ximage (Display *dpy, Visual *visual, const char *filename,
row += stride;
}
+ /* #### valgrind on xflame says there's a small leak in pb? */
g_object_unref (pb);
return image;
}
diff --git a/hacks/xjack.c b/hacks/xjack.c
index f5a3eb7..27e4c9e 100644
--- a/hacks/xjack.c
+++ b/hacks/xjack.c
@@ -97,6 +97,7 @@ xjack_init (Display *dpy, Window window)
st->font = load_font_retry (st->dpy, fontname);
if (!st->font) abort();
+ if (fontname) free (fontname);
gcv.font = st->font->fid;
gcv.foreground = get_pixel_resource (st->dpy, st->xgwa.colormap,
@@ -461,6 +462,8 @@ static void
xjack_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->gc);
+ XFreeFont (dpy, st->font);
free (st);
}
diff --git a/hacks/xlockmore.c b/hacks/xlockmore.c
index 79d430a..addfd4c 100644
--- a/hacks/xlockmore.c
+++ b/hacks/xlockmore.c
@@ -71,6 +71,9 @@ xlockmore_setup (struct xscreensaver_function_table *xsft, void *arg)
/* Translate the xlockmore `opts[]' argument to a form that
screenhack.c expects.
+
+ Some of the strings in here are leaked at exit, but since this code
+ only runs on X11, that doesn't matter.
*/
new_options = (XrmOptionDescRec *)
calloc (xlockmore_opts->numopts*3 + 100, sizeof (*new_options));
diff --git a/hacks/xlockmore.h b/hacks/xlockmore.h
index 285a126..bbb7f84 100644
--- a/hacks/xlockmore.h
+++ b/hacks/xlockmore.h
@@ -1,5 +1,5 @@
/* xlockmore.h --- xscreensaver compatibility layer for xlockmore modules.
- * xscreensaver, Copyright (c) 1997-2017 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1997-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -177,8 +177,10 @@ ERROR! Sorry, xlockmore.h requires ANSI C (gcc, for example.)
# ifdef USE_GL
# define XLOCKMORE_FPS xlockmore_gl_compute_fps
+# define XLOCKMORE_FPS_FREE xlockmore_gl_free_fps
# else
# define XLOCKMORE_FPS xlockmore_do_fps
+# define XLOCKMORE_FPS_FREE fps_free
# endif
# ifdef HAVE_JWXYZ
@@ -246,7 +248,7 @@ ERROR! Sorry, xlockmore.h requires ANSI C (gcc, for example.)
xlockmore_setup, \
& NAME ## _xlockmore_function_table, \
0, 0, 0, 0, 0, \
- XLOCKMORE_FPS, \
+ XLOCKMORE_FPS, XLOCKMORE_FPS_FREE, \
XLOCKMORE_VISUAL }; \
\
XSCREENSAVER_LINK (NAME ## _xscreensaver_function_table)
diff --git a/hacks/xlockmoreI.h b/hacks/xlockmoreI.h
index bf0adbf..440d39a 100644
--- a/hacks/xlockmoreI.h
+++ b/hacks/xlockmoreI.h
@@ -73,6 +73,7 @@ typedef struct ModeInfo ModeInfo;
extern void do_fps (ModeInfo *);
extern void xlockmore_gl_compute_fps (Display *, Window, fps_state *, void *);
extern void xlockmore_gl_draw_fps (ModeInfo *);
+extern void xlockmore_gl_free_fps (fps_state *);
# define do_fps xlockmore_gl_draw_fps
diff --git a/hacks/xlyap.c b/hacks/xlyap.c
index 2d43ce9..9f1305b 100644
--- a/hacks/xlyap.c
+++ b/hacks/xlyap.c
@@ -600,6 +600,7 @@ parseargs(struct state *st)
if (st->Forcing[findex] >= NUMMAPS)
usage();
}
+ if (optarg) free (optarg);
}
#endif
if (get_boolean_resource(st->dpy, "useLog", "Boolean"))
@@ -624,6 +625,7 @@ parseargs(struct state *st)
if (s && *s) {
st->prob=atof(s); st->Rflag++; setforcing(st);
}
+ if (s) free (s);
st->settle = get_integer_resource(st->dpy, "settle", "Integer");
@@ -633,11 +635,13 @@ parseargs(struct state *st)
st->min_a = atof(s);
st->aflag++;
}
+ if (s) free (s);
s = get_string_resource(st->dpy, "minB", "Float");
if (s && *s) {
st->min_b=atof(s); st->bflag++;
}
+ if (s) free (s);
#else
st->min_a = get_float_resource (st->dpy, "minA", "Float");
st->aflag++;
@@ -665,12 +669,14 @@ parseargs(struct state *st)
ch++;
}
}
+ if (s) free (s);
s = get_string_resource(st->dpy, "bRange", "Float");
if (s && *s) {
st->b_range = atof(s);
st->hflag++;
}
+ if (s) free (s);
st->start_x = get_float_resource(st->dpy, "startX", "Float");
@@ -693,6 +699,7 @@ parseargs(struct state *st)
for (i=0;i<FUNCMAXINDEX;i++)
st->Forcing[i] = st->mapindex;
}
+ if (s) free (s);
st->outname = get_string_resource(st->dpy, "outputFile", "Integer");
@@ -707,6 +714,7 @@ parseargs(struct state *st)
if (s && *s) {
st->a_range = atof(s); st->wflag++;
}
+ if (s) free (s);
st->max_a = st->min_a + st->a_range;
st->max_b = st->min_b + st->b_range;
@@ -1924,6 +1932,7 @@ xlyap_free (Display *dpy, Window window, void *closure)
/* XFreeGC (st->dpy, st->RubberGC);*/
for (i = 0; i < st->maxcolor; i++)
XFreeGC (st->dpy, st->Data_GC[i]);
+ if (st->outname) free (st->outname);
free (st);
}
diff --git a/hacks/xmatrix.c b/hacks/xmatrix.c
index decddaa..45c5f9d 100644
--- a/hacks/xmatrix.c
+++ b/hacks/xmatrix.c
@@ -437,6 +437,7 @@ init_trace (m_state *state)
if (!s)
goto FAIL;
+ if (state->tracing) free (state->tracing);
state->tracing = (signed char *) malloc (strlen (s) + 1);
s3 = state->tracing;
@@ -450,6 +451,7 @@ init_trace (m_state *state)
state->glyph_map = decimal_encoding;
state->nglyphs = countof(decimal_encoding);
+ free (s);
return;
@@ -580,7 +582,7 @@ xmatrix_init (Display *dpy, Window window)
state->small_p = (state->xgwa.width < 300);
{
- const char *s = get_string_resource (dpy, "matrixFont", "String");
+ char *s = get_string_resource (dpy, "matrixFont", "String");
if (!s || !*s || !strcasecmp(s, "large"))
state->small_p = False;
else if (!strcasecmp(s, "small"))
@@ -588,6 +590,7 @@ xmatrix_init (Display *dpy, Window window)
else
fprintf (stderr, "%s: matrixFont should be 'small' or 'large' not '%s'\n",
progname, s);
+ if (s) free (s);
}
load_images (dpy, state);
@@ -733,6 +736,7 @@ xmatrix_init (Display *dpy, Window window)
fprintf (stderr, "not `%s'\n", mode);
set_mode (state, MATRIX);
}
+ if (mode) free (mode);
if (state->mode == MATRIX && get_boolean_resource (dpy, "trace", "Boolean"))
set_mode (state, ((random() % 3) ? TRACE_TEXT_A : TRACE_TEXT_B));
@@ -1795,13 +1799,20 @@ static void
xmatrix_free (Display *dpy, Window window, void *closure)
{
m_state *state = (m_state *) closure;
+ int i;
if (state->tc)
textclient_close (state->tc);
if (state->cursor_timer)
XtRemoveTimeOut (state->cursor_timer);
-
- /* #### there's more to free here */
-
+ XFreeGC (dpy, state->draw_gc);
+ XFreeGC (dpy, state->erase_gc);
+ XFreeGC (dpy, state->scratch_gc);
+ free (state->cells);
+ free (state->background);
+ free (state->feeders);
+ if (state->tracing) free (state->tracing);
+ for (i = 0; i < CHAR_MAPS; i++)
+ if (state->images[i]) XFreePixmap (dpy, state->images[i]);
free (state);
}
diff --git a/hacks/xrayswarm.c b/hacks/xrayswarm.c
index 678c7b0..d14eb39 100644
--- a/hacks/xrayswarm.c
+++ b/hacks/xrayswarm.c
@@ -324,6 +324,7 @@ static int initGraphics(struct state *st)
color.flags=DoRed|DoGreen|DoBlue;
XAllocColor(st->dpy,cmap,&color);
xgcv.foreground=color.pixel;
+ if (st->fgc[i]) XFreeGC (st->dpy, st->fgc[i]);
st->fgc[i] = XCreateGC(st->dpy, st->win, GCForeground | GCFunction,&xgcv);
#ifdef HAVE_JWXYZ
jwxyz_XSetAntiAliasing (st->dpy, st->fgc[i], False);
@@ -1218,6 +1219,10 @@ static void
xrayswarm_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ int i;
+ for (i = 0; i < 256; i++)
+ if (st->fgc[i]) XFreeGC (dpy, (st->fgc[i]));
+ XFreeGC (dpy, st->cgc);
free (st);
}
diff --git a/hacks/xspirograph.c b/hacks/xspirograph.c
index e6504ff..a67d8b2 100644
--- a/hacks/xspirograph.c
+++ b/hacks/xspirograph.c
@@ -303,6 +303,7 @@ static void
xspirograph_free (Display *dpy, Window window, void *closure)
{
struct state *st = (struct state *) closure;
+ XFreeGC (dpy, st->draw_gc);
free (st);
}
diff --git a/jwxyz/jwxyz.h b/jwxyz/jwxyz.h
index c70bdbe..fa76571 100644
--- a/jwxyz/jwxyz.h
+++ b/jwxyz/jwxyz.h
@@ -39,6 +39,7 @@
extern void jwxyz_abort(const char *fmt, ...) __dead2;
#define abort() jwxyz_abort("abort in %s:%d", __FUNCTION__, __LINE__)
+#define exit(N) jwxyz_abort("abort in %s:%d", __FUNCTION__, __LINE__)
typedef int Bool;
typedef int Status;
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 9b84188..628e137 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,4 +1,4 @@
-# Auto-generated: Sun Aug 12 16:36:38 PDT 2018
+# Auto-generated: Fri Dec 28 16:21:54 PST 2018
driver/demo-Gtk-conf.c
driver/demo-Gtk.c
driver/screensaver-properties.desktop.in
@@ -111,6 +111,7 @@ hacks/config/grav.xml
hacks/config/greynetic.xml
hacks/config/halftone.xml
hacks/config/halo.xml
+hacks/config/handsy.xml
hacks/config/helix.xml
hacks/config/hexadrop.xml
hacks/config/hexstrut.xml
diff --git a/utils/Makefile.in b/utils/Makefile.in
index 56fc602..dbb593b 100644
--- a/utils/Makefile.in
+++ b/utils/Makefile.in
@@ -195,7 +195,7 @@ CCUTILS = $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS)
$(CC) -c $(CCUTILS) $<
# Two versions of this: driver/ does not link with Xft, but hacks/ does.
-font-retry-xft.o: font-retry.c
+font-retry-xft.o: $(srcdir)/font-retry.c
$(CC) -c $(CCUTILS) -DUSE_XFT $< -o $@
diff --git a/utils/colors.c b/utils/colors.c
index e6abd48..5445cd6 100644
--- a/utils/colors.c
+++ b/utils/colors.c
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1997-2013 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -383,9 +383,22 @@ make_color_path (Screen *screen, Visual *visual, Colormap cmap,
/* Floating-point round-off can make us decide to use fewer colors. */
if (k < *ncolorsP)
{
+ /* We used to just return the smaller set of colors, but that meant
+ that after re-generating the color map repeatedly, the number of
+ colors in use would tend toward 0, which not only looked bad but
+ also often caused crashes. So instead, just duplicate the last
+ color to pad things out. */
+# if 0
*ncolorsP = k;
if (k <= 0)
return;
+# else
+ for (i = k+1; i < *ncolorsP; i++)
+ /* #### Should duplicate the allocation of the color cell here
+ to avoid a double-color-free on PseudoColor, but it's 2018
+ and I don't care, */
+ colors[i] = colors[k];
+# endif
}
if (!allocate_p)
diff --git a/utils/erase.c b/utils/erase.c
index ae15ac8..fdf7496 100644
--- a/utils/erase.c
+++ b/utils/erase.c
@@ -750,7 +750,7 @@ eraser_init (Display *dpy, Window window)
which = -1;
else
which = get_integer_resource(dpy, "eraseMode", "Integer");
- free (s);
+ if (s) free (s);
if (which < 0 || which >= countof(erasers))
which = random() % countof(erasers);
diff --git a/utils/font-retry.c b/utils/font-retry.c
index c3e91a0..ab999e2 100644
--- a/utils/font-retry.c
+++ b/utils/font-retry.c
@@ -25,19 +25,21 @@ extern const char *progname;
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
+#undef DEBUG
+
static void *
load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
{
# ifdef USE_XFT
-# define LOADFONT() (xft_p \
- ? (void *) XftFontOpenXlfd (dpy, screen, xlfd) \
- : (void *) XLoadQueryFont (dpy, xlfd))
+# define LOADFONT(F) (xft_p \
+ ? (void *) XftFontOpenXlfd (dpy, screen, (F)) \
+ : (void *) XLoadQueryFont (dpy, (F)))
# else
-# define LOADFONT() ((void *) XLoadQueryFont (dpy, xlfd))
+# define LOADFONT(F) ((void *) XLoadQueryFont (dpy, (F)))
# endif
- void *f = LOADFONT();
+ void *f = xlfd ? LOADFONT(xlfd) : 0;
# ifndef USE_XFT
if (xft_p) abort();
@@ -46,11 +48,18 @@ load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
# ifdef HAVE_JWXYZ
return f;
# else /* !HAVE_JWXYZ */
+ if (! xlfd) xlfd = "<null>";
if (f)
- return f;
+ {
+# ifdef DEBUG
+ fprintf (stderr, "%s: loaded %s\n", progname, xlfd);
+# endif
+ return f;
+ }
else
{
- Bool bold_p = (!!strcasestr (xlfd, "-bold-"));
+ Bool bold_p = (!!strcasestr (xlfd, "-bold-") ||
+ !!strcasestr (xlfd, "-ocr"));
Bool italic_p = (!!strcasestr (xlfd, "-i-") ||
!!strcasestr (xlfd, "-o-"));
Bool fixed_p = (!!strcasestr (xlfd, "courier") ||
@@ -59,6 +68,10 @@ load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
!!strcasestr (xlfd, "-c-"));
int size = 0;
+# ifdef DEBUG
+ fprintf (stderr, "%s: failed %s\n", progname, xlfd);
+# endif
+
if (!strcmp (xlfd, "vga")) /* BSOD uses this: it has no XLFD name. */
fixed_p = True, size = 120;
@@ -90,7 +103,7 @@ load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
fprintf (stderr, "%s: unloadable, unparsable font: \"%s\"\n",
progname, xlfd);
xlfd = "fixed";
- return LOADFONT();
+ return LOADFONT(xlfd);
}
else
{
@@ -145,13 +158,17 @@ load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
spacings[e],
"*", /* average width */
charsets[a]);
- /* fprintf(stderr, "%s: trying %s\n", progname, buf);*/
- f = LOADFONT();
+# ifdef DEBUG
+ fprintf(stderr, "%s: trying %s\n", progname, buf);
+# endif
+ f = LOADFONT(buf);
if (f)
{
- /* fprintf (stderr,
+# ifdef DEBUG
+ fprintf (stderr,
"%s: substituted \"%s\" for \"%s\"\n",
- progname, buf, xlfd); */
+ progname, buf, xlfd);
+# endif
return f;
}
}
@@ -159,7 +176,7 @@ load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
fprintf (stderr, "%s: unable to find any alternatives to \"%s\"\n",
progname, xlfd);
xlfd = "fixed";
- return LOADFONT();
+ return LOADFONT(xlfd);
}
}
# endif /* !HAVE_JWXYZ */
diff --git a/utils/textclient-mobile.c b/utils/textclient-mobile.c
index c321487..4d0d891 100644
--- a/utils/textclient-mobile.c
+++ b/utils/textclient-mobile.c
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2012-2016 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2012-2018 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -311,11 +311,13 @@ textclient_strip_html (const char *html)
int comment = 0;
int white = 0;
int nl = 0;
- char *ret = (char *) malloc ((strlen(html) * 4) + 1); // room for UTF8
+ int L = strlen(html);
+ char *ret = (char *) malloc ((L * 4) + 1); // room for UTF8
char *out = ret;
*out = 0;
for (const char *in = html; *in; in++) {
+ if (in >= html + L) abort();
if (comment) {
if (!strncmp (in, "-->", 3)) {
comment = 0;
@@ -339,7 +341,7 @@ textclient_strip_html (const char *html)
white = 1;
}
} else if (*in == ' ' || *in == '\t' || *in == '\r' || *in == '\n') {
- if (!white && out != html)
+ if (!white && out != ret)
*out++ = ' ';
white = 1;
} else {
@@ -552,7 +554,8 @@ strip_wiki (char *text)
static char *
textclient_strip_rss (const char *rss)
{
- char *ret = malloc (strlen(rss) * 4 + 1); // room for UTF8
+ int L = strlen(rss);
+ char *ret = malloc (L * 4 + 1); // room for UTF8
char *out = ret;
const char *a = 0, *b = 0, *c = 0, *d = 0, *t = 0;
int head = 1;
@@ -561,6 +564,7 @@ textclient_strip_rss (const char *rss)
*out = 0;
for (const char *in = rss; *in; in++) {
+ if (in >= rss + L) abort();
if (*in == '<') {
if (!strncasecmp (in, "<item", 5) || // New item, dump.
!strncasecmp (in, "<entry", 6)) {
@@ -592,6 +596,8 @@ textclient_strip_rss (const char *rss)
out += strlen (out);
}
+ if (done) break;
+
} else if (head) { // still before first <item>
;
} else if (!strncasecmp (in, "<title", 6)) {
diff --git a/utils/version.h b/utils/version.h
index 5ad7580..7bdae95 100644
--- a/utils/version.h
+++ b/utils/version.h
@@ -1,2 +1,2 @@
static const char screensaver_id[] =
- "@(#)xscreensaver 5.40 (12-Aug-2018), by Jamie Zawinski (jwz@jwz.org)";
+ "@(#)xscreensaver 5.42 (28-Dec-2018), by Jamie Zawinski (jwz@jwz.org)";
diff --git a/utils/yarandom.h b/utils/yarandom.h
index 711aadd..9a75cdf 100644
--- a/utils/yarandom.h
+++ b/utils/yarandom.h
@@ -25,8 +25,23 @@
#undef drand48
#undef srandom
#undef srand
-#undef srand48
#undef frand
+#undef sranddev
+#undef srandomdev
+#undef arc4random
+#undef arc4random_addrandom
+#undef arc4random_buf
+#undef arc4random_stir
+#undef arc4random_uniform
+#undef erand48
+#undef jrand48
+#undef lcong48
+#undef lrand48
+#undef mrand48
+#undef nrand48
+#undef seed48
+#undef srand48
+#undef rand_r
#undef RAND_MAX
#ifdef VMS
@@ -47,8 +62,23 @@ extern void ya_rand_init (unsigned int);
#define drand48 __ERROR_use_frand_not_drand48_in_xscreensaver__
#define srandom __ERROR_do_not_call_srandom_in_xscreensaver__
#define srand __ERROR_do_not_call_srand_in_xscreensaver__
-#define srand48 __ERROR_do_not_call_srand48_in_xscreensaver__
+#define sranddev __ERROR_do_not_call_sranddev_in_xscreensaver__
#define ya_rand_init __ERROR_do_not_call_ya_rand_init_in_xscreensaver__
+#define srandomdev __ERROR_do_not_call_srandomdev_in_xscreensaver__
+#define arc4random __ERROR_do_not_call_arc4random_in_xscreensaver__
+#define arc4random_addrandom __ERROR_do_not_call_arc4random_in_xscreensaver__
+#define arc4random_buf __ERROR_do_not_call_arc4random_in_xscreensaver__
+#define arc4random_stir __ERROR_do_not_call_arc4random_in_xscreensaver__
+#define arc4random_uniform __ERROR_do_not_call_arc4random_in_xscreensaver__
+#define erand48 __ERROR_do_not_call_erand48_in_xscreensaver__
+#define jrand48 __ERROR_do_not_call_jrand48_in_xscreensaver__
+#define lcong48 __ERROR_do_not_call_lcong48_in_xscreensaver__
+#define lrand48 __ERROR_do_not_call_lrand48_in_xscreensaver__
+#define mrand48 __ERROR_do_not_call_mrand48_in_xscreensaver__
+#define nrand48 __ERROR_do_not_call_nrand48_in_xscreensaver__
+#define seed48 __ERROR_do_not_call_seed48_in_xscreensaver__
+#define srand48 __ERROR_do_not_call_srand48_in_xscreensaver__
+#define rand_r __ERROR_do_not_call_rand_r_in_xscreensaver__
#if defined (__GNUC__) && (__GNUC__ >= 2)
diff --git a/xscreensaver.spec b/xscreensaver.spec
index 1e14f51..da913e6 100644
--- a/xscreensaver.spec
+++ b/xscreensaver.spec
@@ -1,5 +1,5 @@
%define name xscreensaver
-%define version 5.40
+%define version 5.42
Summary: X screen saver and locker
Name: %{name}